前言
MQ 是目前 Java 项目中使用很多的中间件,平时自己使用并不多,编写几个 demo ,加强对 MQ 的感性理解。
Docker 安装
RabbitMq 在安装上可以直接使用 Docker,非常方便的。这里先记录一下参考的连接。完成了文章中的步骤,一个 RabbitMq 就被运行起来了。
环境
我使用的是 SpringCloud 项目,依赖的是以下版本:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.3.RELEASE</version>
</parent>
- 在 pom.xml 引入 Rabbitmq 的 starter
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
起步
Demo1: 向 Mq 传递一个时间,并由 MqReceiver 接受并打印
- 编写一个接收的类
/**
* Mq 的接收数据Test
*/
@Slf4j
@Component
public class MqReceiver {
@RabbitListener(queues = "myQueue") // 表示监听 "myQueue" 这个队列
public void process(String message) {
log.info("MyReceiver: {}", message);
}
}
- 编写一个发布者Test
/**
* 测试方法
*/
@Component
public class MqReceiverTest extends AppTest {
@Autowired
private AmqpTemplate amqpTemplate;
@Test
public void send() {
amqpTemplate.convertAndSend("myQueue", "now: " + new Date());
}
}
- 启动接收者服务
- 坑1:找不到队列。
org.springframework.amqp.rabbit.listener.BlockingQueueConsumer$DeclarationException: Failed to declare queue(s):[myQueue] - 解决方法:去 RabbitMq 新建一个队列。
- 解决后,连接成功:
Created new connection: rabbitConnectionFactory#61e45f87:0/SimpleConnection@6eaa21d8 [delegate=amqp://user@192.168.23.111:5672/, localPort= 57395]
- 坑1:找不到队列。

-
启动Test发布服务
-
接收成功:
[cTaskExecutor-1] c.q.l.springcloud.message.MqReceiver : MyReceiver: now: Fri Apr 17 13:25:59 CST 2020
-
demo1 完成