微服务_消息可靠投递
RabbitMQ消息确认机制
publisher------>Exchange------>Queue----------->consumers
publisher 发送端
confirmCallback
#开启发送端确认
spring.rabbitmq.publisher-confirm=true
消息只要被broker接收到就会执行confirmCallback
被broker接收到只能表示message已经到达服务器,并不能保证消息一定会被投递到目标queue里。
所以需要用到接下来的returnCallback
returnCallback
#开启发送端消息抵达队列确认
spring.rabbitmq.publisher-returns=true
spring.rabbitmq.template.mandatory=true
Exchange----->Queue
consumers 消费端
Ack消息确认机制
#设置手动ack消息
spring.rabbitmq.listener.simple.acknowledge-model=manual
消费者获取到消息,成功处理,可以回复Ack给Broker
-basic.ack 用于肯定确认;broker将移除此消息
-basic.nack 用于否定确认;可以指定broker是否丢弃消息,可以批量
-basic.reject 用于否定确认;不能批量
如何签收:
channel.basicAck();签收
channel.basicNack();拒签

浙公网安备 33010602011771号