【问题标题】:How to push messages from unacked to ready, rabbitmq如何将消息从未确认推送到就绪,rabbitmq
【发布时间】:2020-07-19 10:35:34
【问题描述】:

我们的应用程序中使用了 RabbitMq 时间累积了数百条消息,几个队列处于未确认状态,并且 TTL 无法正常工作,因为在侦听器不活动时发生了几次意外关闭。

现在出于业务原因,我不能只清空队列。 我想手动将未确认的消息推送到就绪状态。

有吗??

谢谢!

【问题讨论】:

    标签: tomcat redis rabbitmq


    【解决方案1】:

    有两种方法可以将消息从未确认状态移动到就绪状态:

    1) 确认来自消费者的消息

    2) 关闭保持打开状态的消费者

    很可能,选项#1 并不是一个真正的选项。当消息被卡在 unack'd 时,通常是因为消费者失去了对消息的跟踪,无法再确认它。

    这通常会留下 #2:您需要关闭之前附加到该队列的所有消费者。当消息未被确认并且消费者掉线时,RMQ 会将消息推送回就绪状态。

    如果您关闭您的消费者并重新启动它们会使消息回到未确认状态,那么您需要找出导致消费者错误的原因,修复代码并重新启动它。

    【讨论】:

    • 还有第三种方法吗??
    【解决方案2】:

    另一种方法是简单地重新启动 rabbitmq 实例。

    /etc/init.d/rabbitmq-server restart
    

    【讨论】:

      【解决方案3】:
      Args.nack = function(tag, allUpTo, requeue)
      

      所以,当你执行 nack 时,关键是传递 true 到 requeue 参数。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-03-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-11-24
        • 1970-01-01
        • 2021-07-21
        相关资源
        最近更新 更多