RabbitMQ“Zombie”消费者

时间:2012-11-16 13:03:26

标签: tcp rabbitmq amqp

我在EC2上使用spot实例来从RabbitMQ队列中使用。每项工作都需要几秒钟,并且需要手动“确认”。

实例终止时出现问题。现在没有时间彻底关闭AMQP消费者了,所以我仍然认为RabbitMQ服务器仍然认为死去的消费者仍然存在。它不会重新提供工作,而且仍会为他们提供新工作。

如何让RabbitMQ自动超时僵尸消费者并将其从工作人员池中删除?

2 个答案:

答案 0 :(得分:5)

我建议在RabbitMQ连接上设置Heartbeat属性。如果心跳停止,RabbitMQ最终会切断连接并将未经处理的消息放回队列中。

答案 1 :(得分:1)

我和你在同一个地方并通过在消费者端设置连接心跳属性(使用node_amqp模块的Node.Js)来解决它。与“僵尸”消费者一起关闭和删除连接。未经批准的工作可以回到Ready。