我在camelcontext中使用默认关机策略。该路由以一个使用超过10k消息的队列消耗的rabbitmq使用者开始。当我停止路由时,消费者继续从队列中消费新消息。因此,飞行交换计数从不递减,并且路由等待关闭直到默认超时值(300s)。有没有办法改变这种行为?基本上阻止rabbitmq使用者在关闭过程中消耗新消息。
答案 0 :(得分:0)
在路由关闭期间保持超时是一个好主意,因为它将允许时间正常关闭您的路由,如果它无法正常执行关闭,那么它将强制它完成。以下是一些指向使用默认关机策略的更多信息的链接。
http://camel.apache.org/graceful-shutdown.html
在最后一个链接中,我建议查看文档的ShutdownRunningTask部分,因为它正在运行像批处理使用者一样消费的消费者。
答案 1 :(得分:0)
我和你有同样的问题。关键是,当关闭时,Camel倾向于暂停消费者而不是关闭消费者。目前RabbitMQ使用者没有实现suspend()方法。问题将在版本2.16.2中修复