gpt4 book ai didi

Rabbitmq:代理重启后未确认的消息不会消失

转载 作者:行者123 更新时间:2023-12-02 20:15:25 24 4
gpt4 key购买 nike

我们观察到了 RabbitMQ 的以下行为,并试图了解它是否正确以及如何解决它。

场景:

  1. (持久)消息被传递到持久队列中
  2. (单个)消费者 (Spring-AMQP) 获取消息并开始处理 => 消息从 READY 变为 UNACK
  3. 现在代理已关闭 => 客户端正确报告“ channel 关闭”
  4. 消费者完成处理,但无法确认消息,因为代理仍处于关闭状态
  5. 代理再次启动 => 客户端重新连接

因此,一条消息永远保持未确认状态(或直到客户端重新启动)。

旁注:在 Rabbit 管理 UI 中,我可以看到现在存在两个 channel 。在代理重新启动之前创建的“死”消息,包含未确认的消息和一条健康的新消息。

这种行为是预期的那样吗?在我看来,这种方式“正确”,RabbitMQ 在代理重新启动后无法知道消息处理是否完成。但是,除了将未确认的消息放回队列并在不重新启动消费者进程的情况下修复系统之外,还有什么解决方案呢?

最佳答案

RabbitMQ 团队监控 this mailing list并且有时只在 StackOverflow 上回答问题。

<小时/>

Is this behavior expected to be like that? It seems to me "correct" in the way, that RabbitMQ can not know after the broker restart, whether the message processing was completed or not.

是的,您正在观察预期的行为。一旦确定消费者确实死亡,RabbitMQ 就会重新将消息重新入队。由于您的消费者重新连接的消费者标签必须与之前相同,因此由该进程来确认或确认消息。

关于Rabbitmq:代理重启后未确认的消息不会消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48905721/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com