重新传送未确认的 RabbitMQ 消息
Redelivering unacknowledged RabbitMQ messages
我的队列中有两条未确认的消息需要重新传送。我做了一项研究,发现我需要使用 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? and 篇文章,但除了重新启动服务器之外并没有真正弄清楚如何使用建议的解决方案。
未确认的消息将保持未确认状态,直到收到消息的消费者拒绝或取消消息,或者 connection/channel 已关闭。
当 connection/channel 死亡时,Rabbitmq 假定这些消息未被处理,因此它们可用于传递给另一个消费者。
为了防止这种情况在未来发生,你应该在消费者中有一些逻辑,如果消费者不会对它做任何事情,rejects/nacks 一条消息 and/or 正确关闭的逻辑connection/channel 到 rabbitmq。
解决方法似乎很简单。如果关闭有未确认消息的连接,消息将被传递到其他连接并获取进程。就我而言,手动关闭连接 53191 解决了问题。
.... but that consumer hasn't yet closed the channel or connection over which it originally received them.....
我实际上监督了上面接受的答案中提到的提示:How can I recover unacknowledged AMQP messages from other channels than my connection's own?
我的队列中有两条未确认的消息需要重新传送。我做了一项研究,发现我需要使用 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? and
未确认的消息将保持未确认状态,直到收到消息的消费者拒绝或取消消息,或者 connection/channel 已关闭。
当 connection/channel 死亡时,Rabbitmq 假定这些消息未被处理,因此它们可用于传递给另一个消费者。
为了防止这种情况在未来发生,你应该在消费者中有一些逻辑,如果消费者不会对它做任何事情,rejects/nacks 一条消息 and/or 正确关闭的逻辑connection/channel 到 rabbitmq。
解决方法似乎很简单。如果关闭有未确认消息的连接,消息将被传递到其他连接并获取进程。就我而言,手动关闭连接 53191 解决了问题。
.... but that consumer hasn't yet closed the channel or connection over which it originally received them.....
我实际上监督了上面接受的答案中提到的提示:How can I recover unacknowledged AMQP messages from other channels than my connection's own?