1.生产者重试机制
配置:
spring:
rabbitmq:
connection-timeout: 1s # 设置MQ的连接超时时间
template:
retry:
enabled: true # 开启超时重试机制
initial-interval: 1000ms # 失败后的初始等待时间
multiplier: 1 # 失败后下次的等待时长倍数,下次等待时长 = 上次等待时长 * multiplier
max-attempts: 3 # 总共尝试次数
2.生产者确认机制
Confirm机制:每个消息都有自己烦人的一个Confirm机制,消息正确到达交换机,返回ack。未到达交换机,返回nack。
Return机制:消息未正确到达队列,会触发该机制。全局只有一个。
配置:
spring:
rabbitmq:
publisher-confirm-type: correlated # 开启publisher confirm机制,并设置confirm类型
publisher-returns: true # 开启publisher return机制
消息持久化
交换机、队列默认就是持久化。消息持久化:delivery_mode=2 表示持久化
消费者确认机制
-
ack:成功处理消息,RabbitMQ从队列中删除该消息
-
nack:消息处理失败,RabbitMQ需要再次投递消息
-
reject:消息处理失败并拒绝该消息,RabbitMQ从队列中删除该消息。一般不用。
一般配置为自动。
spring:
rabbitmq:
listener:
simple:
acknowledge-mode: auto # 自动ack