配置

依赖配置

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

application配置

  1. spring.rabbitmq.host=192.168.56.101
  2. spring.rabbitmq.port=5673
  3. spring.rabbitmq.username=test
  4. spring.rabbitmq.password=123456
  5. spring.rabbitmq.virtual-host=/ems
  6. # 发送确认
  7. spring.rabbitmq.publisher-confirm-type=correlated
  8. #spring.rabbitmq.publisher-confirms=true(旧版)
  9. # 发送回调
  10. spring.rabbitmq.publisher-returns=true
  11. # 消费手动确认
  12. spring.rabbitmq.listener.direct.acknowledge-mode=manual
  13. spring.rabbitmq.listener.simple.acknowledge-mode=manual
  14. #并发消费者初始化值
  15. spring.rabbitmq.listener.simple.concurrency=1
  16. #并发消费者的最大值
  17. spring.rabbitmq.listener.simple.max-concurrency=10
  18. #每个消费者每次监听时可拉取处理的消息数量
  19. #在单个请求中处理的消息个数,他应该大于等于事务数量(unack的最大数量)
  20. spring.rabbitmq.listener.simple.prefetch=1
  21. # 是否支持重试
  22. spring.rabbitmq.listener.simple.retry.enabled=true

消息确认

RabbitMQ的消息确认有两种。

消息发送确认

这种是用来确认生产者将消息发送给交换器,交换器传递给队列的过程中,消息是否成功投递。发送确认分为两步,一是确认是否到达交换器,二是确认是否到达队列。

消费接收确认

这种是确认消费者是否成功消费了队列中的消息。

属性配置

spring.rabbitmq.publisher-confirm在springboot2.2.0.RELEASE版本之前是amqp正式支持的属性,用来配置消息发送到交换器之后是否触发回调方法,在2.2.0及之后该属性过期使用spring.rabbitmq.publisher-confirm-type属性配置代替,用来配置更多的确认类型;

NONE 禁用发布确认模式,是默认值
CORRELATED 值是发布消息成功到交换器后会触发回调方法
SIMPLE 值经测试有两种效果,其一效果和CORRELATED值一样会触发回调方法,其二在发布消息成功后使用rabbitTemplate调用waitForConfirms或waitForConfirmsOrDie方法等待broker节点返回发送结果,根据返回结果来判定下一步的逻辑,要注意的点是waitForConfirmsOrDie方法如果返回false则会关闭channel,则接下来无法发送消息到broker;

参考

https://www.iocoder.cn/Spring-Boot/RabbitMQ/?self