如何将消息从unacked推送到ready,rabbitmq

时间:2016-12-02 11:06:48

标签: tomcat redis rabbitmq mq

RabbitMq用于我们的应用程序 有几百个时间累积的消息,处于几个队列的非堆叠状态,并且当侦听器不活动时,由于几个意外关闭,TTL无法正常工作。

现在出于商业原因我不能清空队列。 我想手动将未经处理的消息推送到就绪状态。

有没有??

谢谢!

3 个答案:

答案 0 :(得分:2)

有两种方法可以将邮件从unack'd转移到就绪状态:

1)来自消费者的消息

2)关闭正在打开它们的消费者

最有可能的是,选项#1实际上不是一个选项。当消息卡在unack'd中时,通常是因为消费者丢失了对消息的跟踪而又不能再消息了。

这通常会留下#2:您需要关闭之前已连接到该队列的所有消费者。当消息被取消并且消费者丢失时,RMQ将把消息推回准备状态。

如果你关闭你的消费者并重新启动它们会将消息恢复到unack'd状态,那么你需要找出导致消费者错误的原因,修复代码并重新启动它。

答案 1 :(得分:1)

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

/etc/init.d/rabbitmq-server restart

答案 2 :(得分:0)

Args.nack = function(tag, allUpTo, requeue)

因此,执行nack时,键为true以便重新排队参数。