1. 安装RabbitMQ
直接使用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
安装&运行完毕。
2. Java整合RabbitMQ
首先新建一个普通的maven项目。
2.1 添加依赖
- 指定jdk编译版本
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>8</source>
<target>8</target>
</configuration>
</plugin>
</plugins>
</build>
- RabbitMQ客户端依赖
<dependency>
<groupId>com.rabbitmq</groupId>
<artifactId>amqp-client</artifactId>
<version>5.8.0</version>
</dependency>
- 引入文件流依赖
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.11.0</version>
</dependency>
2.2 整合测试
2.2.1 生产者代码
/**
* @Description 生产者代码
* @date 2022/3/4 16:53
*/
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();
// 产生队列
/**
* queueDeclare:
* 1. 名称
* 2. 是否持久化消息
* 3. 是否只供一个消费者消费
* 4. 没有消费者之后是否自动删除
* 5. 其它参数
*/
channel.queueDeclare(QUEUE_NAME,false,false,false,null);
// 消息体
String msg = "Hello RabbitMQ";
// 发送消息
/**
* basicPublish:
* 1. 指定交换机
* 2. 路由的key
* 3. 其它参数
* 4. 消息体
*/
channel.basicPublish("",QUEUE_NAME,null,msg.getBytes());
System.out.println("----------==========发送完毕==========----------");
}
}
运行之后控制台会输出发送完毕
在RabbitMQ的web端可以看到消息信息
2.2.2 消费者代码
/**
* @Description 消费者代码
* @date 2022/3/4 19:31
*/
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("消费者取消消费");
};
// 消费消息
/**
* basicConsume
* 1. 消费的队列名称
* 2. 成功之后是否自动应答
* 3. 接收到消息的回调
* 4. 消费者取消消费的回调
*/
channel.basicConsume(QUEUE_NAME,true,deliverCallback,cancelCallback);
}
}
运行之后控制台会打印出消息