SpringCloud | RabbitMq | 最简单的demo

321 阅读1分钟

前言

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]

  • 启动Test发布服务

  • 接收成功:

[cTaskExecutor-1] c.q.l.springcloud.message.MqReceiver     : MyReceiver: now: Fri Apr 17 13:25:59 CST 2020