【发布时间】:2019-09-23 07:12:00
【问题描述】:
有没有办法优雅地停止 ListenerContainer 及其关联的 Consumers。
我正在努力实现的目标。
- 停止使用消息。
- 优雅地停下
ListenerContainer。 - 等待长时间运行的消费者,完成后确认。
我可以使用consumer.stop() 停止ListenerContainers,但是活动的长时间运行的消费者不会成功完成,并且处理的消息将不会被确认,因此将在 ListenerContainer 恢复后再次处理.
输出
Waiting for workers to finish.
Workers not finished.
Closing channel for unresponsive consumer: Consumer@6d229b1c
消息已处理,但未确认。
我或许可以使用setForceCloseChannel(false) 实现正常关闭,但是否可以验证取消的消费者是否已完成? SimpleMessageListenerContainer.doShutDown() 有一个本地范围的列表“cancelledConsumers”。
【问题讨论】:
标签: java spring rabbitmq spring-amqp spring-rabbit