ACK消息确认机制

Posted 狠情

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ACK消息确认机制相关的知识,希望对你有一定的参考价值。

ACK消息确认机制
ACK机制是消费者从RabbitMQ收到消息并处理完成后,反馈给RabbitMQ,RabbitMQ收到反馈后才将次消息从队列中删除。
1. 如果一个消费者在处理消息出现了网络不稳定、服务器异常等现象,那么就不会有ACK反馈,RabbitMQ会认为这个消息没有正常消费,会将消息重新放入队列中。
2. 如果在集群的情况下:RabbitMQ会立刻将这个消息推送给这个在线的其他消费者。这种机制保证了在消费者服务端故障的时候,不丢失任何消息和任务。
3. 消息永远不会从RabbitMQ中删除:只有当消费者正确返送ACK反馈,RabbitMQ确认收到后,消息才会从RabbitMQ服务的数据中删除。
4. 消息的ACK确认机制默认是打开的。
解决方式
方式一:可以在消费消息中try-catch
由于在消费消息时可能抛出运行时异常,这种解决方式难于处理和控制。
方式二:在Consumer的配置文件中配置重试机制
配置开启重试及重试次数,在RabbitMQ没有收到ACK确认时,重新放入队列,重试指定次数后不再放入队列。

以上是关于ACK消息确认机制的主要内容,如果未能解决你的问题,请参考以下文章

Kafka的ack机制

ActiveMQ 确认机制ACK(收到消息后,应该有一个回应也就是确认答复)

RabbitMQ:消费者ACK机制生产者消息确认

RabbitMQ消息队列:ACK机制

4-5:TCP协议之确认应答(ACK)机制和超时重传机制

RocketMQ之offset确认机制