结合RabbitMQ基础的入门案例演示

1.引入依赖

在父工程mq-demo中引入依赖,因为无论publisher还是consumer都要这个依赖

  1. <!--AMQP依赖,包含RabbitMQ-->
  2. <dependency>
  3. <groupId>org.springframework.boot</groupId>
  4. <artifactId>spring-boot-starter-amqp</artifactId>
  5. </dependency>

2.消息发送

首先配置MQ地址,在publisher服务的application.yml中添加配置:

  1. spring:
  2. rabbitmq:
  3. host: 192.168.150.101 # 主机名
  4. port: 5672 # 端口
  5. virtual-host: / # 虚拟主机
  6. username: itcast # 用户名
  7. password: 123321 # 密码

然后在publisher服务中编写测试类SpringAmqpTest,并利用RabbitTemplate实现消息发送:

  1. package cn.itcast.mq.spring;
  2. @RunWith(SpringRunner.class)
  3. @SpringBootTest
  4. public class SpringAmqpTest {
  5. @Autowired
  6. private RabbitTemplate rabbitTemplate;
  7. @Test
  8. public void testSimpleQueue() {
  9. // 队列名称
  10. String queueName = "simple.queue";
  11. // 消息
  12. String message = "hello, spring amqp!";
  13. // 发送消息
  14. rabbitTemplate.convertAndSend(queueName, message);
  15. }
  16. }

发送了的消息在RabbitMQ消息队列里面看得到
image.png

3.处理消息

首先配置MQ地址,在consumer服务的application.yml中添加配置:

  1. spring:
  2. rabbitmq:
  3. host: 192.168.150.101 # 主机名
  4. port: 5672 # 端口
  5. virtual-host: / # 虚拟主机
  6. username: itcast # 用户名
  7. password: 123321 # 密码

然后在consumer服务中新建一个类SpringRabbitListener,代码如下:

  1. package cn.itcast.mq.listener;
  2. @Component
  3. public class SpringRabbitListener {
  4. @RabbitListener(queues = "simple.queue")
  5. public void listenSimpleQueueMessage(String msg) throws InterruptedException {
  6. System.out.println("spring 消费者接收到消息:【" + msg + "】");
  7. }
  8. }

启动consumer服务,就会在控制台看到输出,因为之前我们在publisher里面测试发送个一个消息给mq,现在启动这个项目,监听到了simple.queue队列的消息,就处理了。
image.png
publisher一直发消息给mq,consumer能实时监听
image.png