1、导入依赖

  1. <dependency>
  2. <groupId>org.springframework.amqp</groupId>
  3. <artifactId>spring-amqp</artifactId>
  4. <version>2.3.10</version>
  5. </dependency>

2、配置application配置文件

  1. #RabbitMQ
  2. rabbitmq:
  3. host: 112.124.20.34
  4. username: guest
  5. password: guest
  6. #虚拟主机
  7. virtual-host: /
  8. #端口号
  9. port: 5672
  10. listener:
  11. simple:
  12. #消费者最小数列
  13. concurrency: 10
  14. #消费者最大数列
  15. max-concurrency: 10
  16. #限制消费者每次只处理一条消息,处理完再继续下一条消息
  17. prefetch: 1
  18. #默认true
  19. auto-startup: true
  20. #被拒绝时重新进入队列
  21. default-requeue-rejected: true
  22. template:
  23. retry:
  24. #发布重试,默认false
  25. enabled: true
  26. #重试时间,默认1000ms
  27. initial-interval: 1000ms
  28. #重试最大次数,默认3次
  29. max-attempts: 3
  30. #重试最大间隔时间,默认10000ms
  31. max-interval: 10000ms
  32. #重试的间隔乘数,比如配2,第一次等10s,第二次就等20s,第三次就等40s
  33. multiplier: 1

3、编写配置类

  1. @Configuration
  2. public class RabbitMQConfig {
  3. @Bean
  4. public Queue queue() {
  5. return new Queue("queue", true);
  6. }
  7. }

4、编写消息发送者(生产者)类

  1. @Service
  2. @Slf4j
  3. public class MQSender {
  4. @Autowired
  5. private RabbitTemplate rabbitTemplate;
  6. public void send(Object msg) {
  7. log.info("消息发送:" + msg);
  8. rabbitTemplate.convertAndSend("fanoutExchange","", msg);
  9. }
  10. }

5、编写消息接收者(消费者)类

  1. @Service
  2. @Slf4j
  3. public class MQReceiver {
  4. @RabbitListener(queues = "queue")
  5. public void receive(Object msg) {
  6. log.info("接收消息:" + msg);
  7. }
  8. }

6、编写测试Controller

  1. @Controller
  2. @RequestMapping("/user")
  3. public class UserController {
  4. @Autowired
  5. private MQSender mqSender;
  6. /**
  7. * 测试RabbitMQ
  8. */
  9. @RequestMapping("/mq")
  10. @ResponseBody
  11. public void mq() {
  12. mqSender.send("Hello");
  13. }
  14. }