我正试图优雅地关闭一个正在消耗RabbitMQ消息的进程。我知道我可以使用Channel.cancel
来阻止RabbitMQ向进程发送任何新消息,但我也需要处理任何挂起的、未确认的消息。我可以调用Channel.nackAll
并重新对所有消息进行排队,但如果我能等到所有挂起的消息(已消耗但尚未确认/nack的消息(都完成,那就更好了。
有什么想法可以实现吗?
- 取消消费者
- 工作完成后确认您当前正在"处理"的消息
- 完成上述操作后,关闭通道和连接。任何未确认的内容都将由RabbitMQ重新排队
注意:RabbitMQ团队监控rabbitmq-users
邮件列表,有时只回答StackOverflow上的问题