如何使用RabbitMQ
一、安装Erlang语言为RabbitMQ搭建运行环境(因为RabbitMQ是Erlang语言开发的)
- Erlang下载地址https://www.erlang.org/downloads
- Erlang 安装,安装步骤很简单一直下一步就可以了,直到安装完成。
- Erlang 环境变量设置,Win+R打开运行窗口 输入 sysdm.cpl回车 点击 高级->环境变量(N)->系统变量中新建
变量名:ERLANG_HOME
变量值:D:\PC\erl-23.0 (自己的安装路径)
然后在系统变量中找到Path变量名选中点击编辑,新建内容 %ERLANG_HOME%\bin
- Erlang 查看版本 WIN+R打开运行窗口 输入 erl如果正确就可以看到弹出的Erlang语言版本
二、安装RabbitMQ
- RabbitMQ去官网下载https://www.rabbitmq.com/download.html 进入页面点击右侧菜单列表中Install: Windows选项,在下载页面找到Direct Downloads下载项选择下载
- RabbitMQ安装,安装步骤和Erlang一样一直下一步就可以,安装完成后RabbitMQ会在系统开始菜单中添加服务快捷键
三、启动RabbitMQ服务
- RabbitMQ服务启动,找到开始菜单中的RabbitMQ Service - start 如果没有点击展开就可以看到,如果提示没有此服务需要安装服务点击RabbitMQ Service - (re)install安装服务
四、开启RabbitMQweb管理界面
- Win+R 输入cmd打开命令行 cd到RabbitMQ安装目录sbin目录下输入下面指令
rabbitmq-plugins.bat enable rabbitmq_management
- 重启RabbitMQ服务 先停止服务 点击开始菜单中的 RabbitMQ Service - stop 停止完成后 再次启动 RabbitMQ Service - start
- 重启服务后 在浏览器中输入http://127.0.0.1:15672 进入web管理界面 默认账号密码 guest/guest
五、编写代码实现消息发布与消费
- 代码来源 https://www.rabbitmq.com/tutorials/tutorial-one-java.html 官方代码库地址:https://github.com/rabbitmq/rabbitmq-tutorials/tree/master/java
- 下载amqp-client-xxx.jar java客户端库
- 编写Send.java消息生产者
import com.rabbitmq.client.ConnectionFactory;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.Channel;
import java.nio.charset.StandardCharsets;
public class Send {
private final static String QUEUE_NAME = "hello";
public static void main(String[] args) throws Exception {
ConnectionFactory factory = new ConnectionFactory();
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(StandardCharsets.UTF_8));
System.out.println(" [x] Send '" + 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[] args) 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, deliver) -> {
String message = new String(deliver.getBody(), "UTF-8");
System.out.println(" [x] Received '" + message + "'");
};
channel.basicConsume(QUEUE_NAME, true, deliverCallback, consumerTag -> {});
}
}
- 运行,先运行Recv.java 接收消息,再运行Send.java 发送消息 Send.java运行完成,就可以看到Recv.java控制台接收到的消息了
图解、上面步骤的截图