我在EC2上使用spot实例来从RabbitMQ队列中使用。每项工作都需要几秒钟,并且需要手动“确认”。
实例终止时出现问题。现在没有时间彻底关闭AMQP消费者了,所以我仍然认为RabbitMQ服务器仍然认为死去的消费者仍然存在。它不会重新提供工作,而且仍会为他们提供新工作。
如何让RabbitMQ自动超时僵尸消费者并将其从工作人员池中删除?
答案 0 :(得分:5)
我建议在RabbitMQ连接上设置Heartbeat属性。如果心跳停止,RabbitMQ最终会切断连接并将未经处理的消息放回队列中。
答案 1 :(得分:1)
我和你在同一个地方并通过在消费者端设置连接心跳属性(使用node_amqp模块的Node.Js)来解决它。与“僵尸”消费者一起关闭和删除连接。未经批准的工作可以回到Ready。