直接使用docker镜像安装RabbitMQ即可。
docker search RabbitMQ
直接选择stars最多的,同时也是最新版本的。
直接拉下来镜像即可。
docker pull RabbitMQ
运行启动RabbitMQ将镜像端口号映射到5672
docker run -d --hostname my-rabbit --name rabbit -p 15672:15672 -p 5672:5672 rabbitmq
进入容器安装RabbitMQ的web访问插件
- 查找容器镜像
docker ps
- 进入容器
docker exec -it 镜像ID /bin/bash
- 安装web访问插件
rabbitmq-plugins enable rabbitmq_management
- 退出容器
Ctrl+q+p
访问测试:
直接访问:ip:15672
默认用户名密码都是guest
安装&运行完毕。
首先新建一个普通的maven项目。
2.1 添加依赖- 指定jdk编译版本
org.apache.maven.plugins maven-compiler-plugin 8 8
- RabbitMQ客户端依赖
com.rabbitmq amqp-client 5.8.0
- 引入文件流依赖
2.2 整合测试 2.2.1 生产者代码commons-io commons-io 2.11.0
public class Producer {
// 队列名称
private static final String QUEUE_NAME = "hello";
public static void main(String[] args) throws Exception {
// 创建连接工厂
ConnectionFactory factory = new ConnectionFactory();
// 配置连接IP
factory.setHost("1");
// 配置RabbitMQ用户名和密码
factory.setUsername("guest");
factory.setPassword("guest");
// 建立连接
Connection connection = factory.newConnection();
// 获取信道
Channel channel = connection.createChannel();
// 产生队列
channel.queueDeclare(QUEUE_NAME,false,false,false,null);
// 消息体
String msg = "Hello RabbitMQ";
// 发送消息
channel.basicPublish("",QUEUE_NAME,null,msg.getBytes());
System.out.println("----------==========发送完毕==========----------");
}
}
运行之后控制台会输出发送完毕
在RabbitMQ的web端可以看到消息信息
public class Consumer {
// 队列名称
private static final String QUEUE_NAME = "hello";
public static void main(String[] args) throws Exception {
// 创建连接工厂
ConnectionFactory factory = new ConnectionFactory();
// 配置连接IP
factory.setHost("1");
// 配置RabbitMQ用户名和密码
factory.setUsername("guest");
factory.setPassword("guest");
// 建立连接
Connection connection = factory.newConnection();
// 创建信道
Channel channel = connection.createChannel();
// 声明:接收消息回调
DeliverCallback deliverCallback = (consumerTag,message) -> {
System.out.println(new String(message.getBody()));
};
// 声明:取消消费回调
CancelCallback cancelCallback = consumerTag -> {
System.out.println("消费者取消消费");
};
// 消费消息
channel.basicConsume(QUEUE_NAME,true,deliverCallback,cancelCallback);
}
}
运行之后控制台会打印出消息



