我在队列中有两条未确认的消息需要重新传递。我做了一项研究,发现我需要使用basic.recover
或basic.nack
,但我不知道如何使用它们,因为我的RabbitMQ知识已经有一天了。可以请有人告诉我使用这些选项的方式吗?我找不到任何例子。
注意:可能不相关,但我在MAC OSX上使用带有RabbitMqBundle的Symfony2应用程序。
$ rabbitmqctl list_queues name messages_ready messages_unacknowledged
Listing queues ...
order_create_qu 0 2
我已经阅读了How can I recover unacknowledged AMQP messages from other channels than my connection's own?和Ack or Nack in rabbitMQ个帖子,但除了重新启动服务器之外,并没有真正解决如何使用建议的解决方案。
答案 0 :(得分:0)
未确认的消息将保持不确认状态,直到收到消息的消费者拒绝或拒绝该消息,或者连接/频道已关闭。
当连接/通道死亡时,Rabbitmq假定这些消息未被处理,因此它们可用于传递给另一个消费者。
为了防止将来发生这种情况,如果消费者不会对它做任何事情和/或正确关闭连接/通道的逻辑,那么消费者应该有一些拒绝/拒绝消息的逻辑。的RabbitMQ。
答案 1 :(得分:0)
解决方案似乎很简单。如果关闭具有未确认消息的连接,则消息将传递到其他连接并获取进程。在我的情况下,手动关闭连接53191解决了问题。
....但是该消费者还没有关闭它最初接收它们的频道或连接.......
我实际上已经监督了上面提到的答案中提到的提示:How can I recover unacknowledged AMQP messages from other channels than my connection's own?