rabbitMq入门一Hello World

版权声明:Copyright © 天明_SKY https://blog.csdn.net/m0_37657585/article/details/85214510

官网教程地址:http://www.rabbitmq.com/getstarted.html

最近项目中要用到MQ消息队列来传输数据,花时间研究了一下rabbitMq,写一点东西。希望对学习mq的同学有点帮助。

在这里说明下,rabbitMq广播消息是实时的,也就是说当你的消费者启动比生产者晚的时候,你需要考虑使用rabbitMq的工作队列或者别的消息处理工具来处理。

1、安装rabbitMq。

rabbitMq是Erlang开发的,所以安装时需要先安装Erlang以支持其工作。下载地址http://erlang.org/download/

rabblitMq软件下载地址:https://www.rabbitmq.com/download.html

rabbitMq软件版本需要与Erlang版本对应,可参考http://www.rabbitmq.com/which-erlang.html查看。

注意:安装完Erlang之后先配置环境变量,再安装rabbitMq。

2、使用浏览器打开 http://localhost:15672,可以访问RabbitMq的管理控制台。在这之前,你需要:

      a、打开命令窗口,输入命令:

"D:\Program Files\RabbitMQ Server\rabbitmq_server-3.7.9\sbin\rabbitmq-plugins.bat" enable rabbitmq_management

     b、然后重启服务(使用管理员运行命令行窗口

net stop RabbitMQ && net start RabbitMQ

此时,你可以使用guest/guest登录查看队列中的消息。(guest是具有administrator角色权限的)

3、使用Java 客户端

请先阅读官网教程http://www.rabbitmq.com/tutorials/tutorial-one-java.html,下面只列出实现代码

我们将用Java编写两个程序; 发送单个消息的生产者,以及接收消息并将其打印出来的消费者。我们将掩盖Java API中的一些细节,专注于这个非常简单的事情,只是为了开始。它传递的消息是“Hello World”。

(RabbitMQ Java客户端也在中央Maven存储库中,包含groupId com.rabbitmq和artifactId amqp-client。)

发送端代码:Send.java(摘录自mq官网)

import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;

public class Send {

	//队列名称
    private final static String QUEUE_NAME = "hello";

    public static void main(String[] argv) throws Exception {
        ConnectionFactory factory = new ConnectionFactory();
      //设置MabbitMQ所在主机ip或者主机名
        factory.setHost("localhost");
      //创建一个连接
        try (Connection connection = factory.newConnection();
        		//创建一个频道
             Channel channel = connection.createChannel()) {
        	//指定一个队列
            channel.queueDeclare(QUEUE_NAME, false, false, false, null);
            //发送的消息
            String message = "Hello World!";
            //往队列中发出一条消息
            channel.basicPublish("", QUEUE_NAME, null, message.getBytes("UTF-8"));
            System.out.println(" [x] Sent '" + message + "'");
        }
    }
}

消费端代码:Recv.java

import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
import com.rabbitmq.client.DeliverCallback;

public class Recv {

    private final static String QUEUE_NAME = "hello";

    public static void main(String[] argv) throws Exception {
        ConnectionFactory factory = new ConnectionFactory();
        factory.setHost("localhost");
        Connection connection = factory.newConnection();
        Channel channel = connection.createChannel();

        channel.queueDeclare(QUEUE_NAME, false, false, false, null);
        System.out.println(" [*] Waiting for messages. To exit press CTRL+C");

        DeliverCallback deliverCallback = (consumerTag, delivery) -> {
            String message = new String(delivery.getBody(), "UTF-8");
            System.out.println(" [x] Received '" + message + "'");
        };
        channel.basicConsume(QUEUE_NAME, true, deliverCallback, consumerTag -> { });
    }
}

下一篇介绍rabbitMq工作队列。

猜你喜欢

转载自blog.csdn.net/m0_37657585/article/details/85214510