当前位置:   article > 正文

SpringBoot + RabbitMQ 简单实现创建队列的三种方式_springboot rabbitmq创建队列

springboot rabbitmq创建队列

 

1、前提:安装:RabbitMQ 通过Docker方式快速安装 

 

2、pox.xml 引入

  1. <dependency>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>spring-cloud-starter-amqp</artifactId>
  4. </dependency>

 

3、application.yml 配置

  1. spring:
  2. rabbitmq:
  3. host: localhost
  4. port: 5672
  5. username: guest
  6. password: guest

4、三种方式代码

  1. package com.macs.order.message;
  2. import lombok.extern.slf4j.Slf4j;
  3. import org.springframework.amqp.rabbit.annotation.Exchange;
  4. import org.springframework.amqp.rabbit.annotation.Queue;
  5. import org.springframework.amqp.rabbit.annotation.QueueBinding;
  6. import org.springframework.amqp.rabbit.annotation.RabbitListener;
  7. import org.springframework.stereotype.Component;
  8. /**
  9. * 接收mq消息
  10. * @author antma
  11. */
  12. @Slf4j
  13. @Component
  14. public class MqReceiver {
  15. //1. 手动创建,需在RabbitMQ中手动创建myQueue1 队列,否则报错
  16. @RabbitListener(queues = "myQueue1")
  17. public void process1(String message){
  18. log.info("MqReceiver1: {}", message);
  19. }
  20. //2. 自动创建队列
  21. @RabbitListener(queuesToDeclare = @Queue("myQueue2"))
  22. public void process2(String message){
  23. log.info("MqReceiver2: {}", message);
  24. }
  25. //3. 自动创建队列,Exchange 与 Queue绑定
  26. @RabbitListener(bindings = @QueueBinding(
  27. value = @Queue("myQueue3"),
  28. exchange = @Exchange("testExChange")
  29. ))
  30. public void process3(String message){
  31. log.info("MqReceiver3: {}", message);
  32. }
  33. // @RabbitListener(bindings = @QueueBinding(
  34. // exchange = @Exchange("myOrder"),
  35. // key = "computer",
  36. // value = @Queue("computerOrder")
  37. // ))
  38. // public void processComputer(String message){
  39. // log.info("computer MqReceiver: {}", message);
  40. //
  41. // }
  42. //
  43. // @RabbitListener(bindings = @QueueBinding(
  44. // exchange = @Exchange("myOrder"),
  45. // key = "fruit",
  46. // value = @Queue("fruitOrder")
  47. // ))
  48. // public void processFruit(String message){
  49. // log.info("fruit MqReceiver: {}", message);
  50. //
  51. // }
  52. }

5、测试类

  1. package com.macs.order;
  2. import org.junit.Test;
  3. import org.springframework.amqp.core.AmqpTemplate;
  4. import org.springframework.beans.factory.annotation.Autowired;
  5. import java.util.Date;
  6. public class MqSenderTest extends OrderApplicationTests {
  7. @Autowired
  8. private AmqpTemplate amqpTemplate;
  9. @Test
  10. public void send1(){
  11. amqpTemplate.convertAndSend("myQueue1", "1 now " + new Date());
  12. }
  13. @Test
  14. public void send2(){
  15. amqpTemplate.convertAndSend("myQueue2", "2 now " + new Date());
  16. }
  17. @Test
  18. public void send3(){
  19. amqpTemplate.convertAndSend("myQueue3", "3 now " + new Date());
  20. }
  21. // @Test
  22. // public void sendOrder(){
  23. // amqpTemplate.convertAndSend("myOrder","computer", "now " + new Date());
  24. // }
  25. //
  26. //
  27. // @Test
  28. // public void sendFruitOrder(){
  29. // amqpTemplate.convertAndSend("myOrder","fruit", "now " + new Date());
  30. // }
  31. }

 

6、启动spring boot 项目,在RabbitMQ队列(Queues)中即可看到队列出现:

注意:第一种方式为手动创建队列,否则启动会报错:

  1. org.springframework.amqp.rabbit.listener.BlockingQueueConsumer$DeclarationException:
  2. Failed to declare queue(s):[myQueue1]

可以看到 myQueue3 绑定了 testExChange ,如下图:

 

7、执行测试类的三个测试方法:

可以看到idea控制台输出可以分别接收到RabbitMQ消息。

 

在RabbitMQ控制台上看到有相应的队列并被消费:

 

 

 

 

 

 

 

 

 

 

本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号