如何确保消息接收方消费了消息?
接收方消息确认机制:消费者接收每一条消息后都必须进行确认(消息接收和消息确认是两个 不同操作)。只有消费者确认了消息,RabbitMQ才能安全地把消息从队列中删除。这里并没 有用到超时机制,RabbitMQ仅通过Consumer的连接中断来确认是否需要重新发送消息。也 就是说,只要连接不中断,RabbitMQ给了Consumer足够长的时间来处理消息。
下面罗列几种特殊情况:
如果消费者接收到消息,在确认之前断开了连接或取消订阅,RabbitMQ会认为消息没有被分 发,然后重新分发给下一个订阅的消费者。(可能存在消息重复消费的隐患,需要根据bizId 去重) 如果消费者接收到消息却没有确认消息,连接也未断开,则RabbitMQ认为该消费者繁忙,将 不会给该消费者分发更多的消息。