我们观察到RabbitMQ的以下行为,并试图了解它是否正确以及如何解决它。
情景:
因此,一条消息永远不会被打开(或直到客户端重新启动)。
旁注:在Rabbit Admin UI中,我可以看到现在存在两个频道。 "死了"在代理重新启动之前创建的一个,包含未分组的消息和一个健康的新消息。
这种行为是否应该是这样的?在我看来,#14;正确"顺便说一下,RabbitMQ在代理重启后无法知道消息处理是否完成。但是,存在什么解决方案,而不是将未经处理的消息返回队列并在不重新启动消费者流程的情况下修复系统?
答案 0 :(得分:0)
RabbitMQ团队监控this mailing list,有时只回答StackOverflow上的问题。
这种行为是否应该是这样的?在我觉得“正确”的方式,RabbitMQ在代理重启后无法知道消息处理是否完成。
是的,您正在观察预期的行为。一旦确定消费者真的死了,RabbitMQ就会重新排队。由于您的消费者与之前必须使用相同的消费者标签重新连接,因此可以通过该过程来确认消息。