如何确保消息正确地发送至 RabbitMQ? 如何确保消息接收方消费了消息?

发送方确认模式 

将信道设置成 confirm 模式发送方确认模式),则所有在信道上发布的消息都 

会被指派一个唯一的 ID。

一旦消息被投递到目的队列后或者消息被写入磁盘后可持久化的消息), 

道会发送一个确认给生产者包含消息唯一 ID)。

如果 RabbitMQ 发生内部错误从而导致消息丢失会发送一条 nack(not

acknowledged,未确认消息

发送方确认模式是异步的生产者应用程序在等待确认的同时可以继续发送消 

当确认消息到达生产者应用程序生产者应用程序的回调方法就会被触发来 

处理确认消息

接收方确认机制 

接收方消息确认机制 

消费者接收每一条消息后都必须进行确认消息接收和消息确认是两个不同操 

)。只有消费者确认了消息,RabbitMQ 才能安全地把消息从队列中删除

这里并没有用到超时机制,RabbitMQ 仅通过 Consumer 的连接中断来确认是否 

需要重新发送消息也就是说只要连接不中断,RabbitMQ 给了 Consumer  

够长的时间来处理消息保证数据的最终一致性

下面罗列几种特殊情况 

如果消费者接收到消息在确认之前断开了连接或取消订阅,RabbitMQ 会认为 

消息没有被分发然后重新分发给下一个订阅的消费者。(可能存在消息重复消 

费的隐患需要去重

如果消费者接收到消息却没有确认消息连接也未断开 RabbitMQ 认为该消 

费者繁忙将不会给该消费者分发更多的消息

Java Program!
原文地址:https://www.cnblogs.com/programb/p/12996021.html