RabbitMQ的消息确认机制主要是用于确保消息的可靠传递,防止消息丢失。
通过发布确认 和消费者确认来实现。
发布确认
当生产者发送消息到RabbitMQ时,可以选择开启发布确认模式,当RabbitMQ成功将消息入队/持久化之后,会发送一个ACK回复生产者,告知消息成功到达队列;
仅当消息处理失败时会返回NACK。
如果生产者在合理的时间内没有收到ACK或者NACK,则可以重发消息。
消费者确认
消费者在处理完一条消息之后,必须发送一个ACK给RabbitMQ,告知RabbitMQ该消息已经处理完成,RabbitMQ在收到ACK之后会将该消息从队列中永久删除。
如果RabbitMQ在收到消费者ACK之前检测到消费者已经断开连接,则认为该消息没有被成功处理,RabbitMQ会重新发送给其他消费者消费。