Camel ShutdownStrategy:Inflight消息不会减少

时间:2015-05-22 12:08:00

标签: apache-camel rabbitmq

我在camelcontext中使用默认关机策略。该路由以一个使用超过10k消息的队列消耗的rabbitmq使用者开始。当我停止路由时,消费者继续从队列中消费新消息。因此,飞行交换计数从不递减,并且路由等待关闭直到默认超时值(300s)。有没有办法改变这种行为?基本上阻止rabbitmq使用者在关闭过程中消耗新消息。

2 个答案:

答案 0 :(得分:0)

在路由关闭期间保持超时是一个好主意,因为它将允许时间正常关闭您的路由,如果它无法正常执行关闭,那么它将强制它完成。以下是一些指向使用默认关机策略的更多信息的链接。

https://access.redhat.com/documentation/en-US/Red_Hat_JBoss_Fuse/6.1/html-single/Apache_Camel_Development_Guide/#BasicPrinciples-StartupShutdown

http://camel.apache.org/graceful-shutdown.html

http://camel.apache.org/maven/current/camel-core/apidocs/org/apache/camel/impl/DefaultShutdownStrategy.html

在最后一个链接中,我建议查看文档的ShutdownRunningTask部分,因为它正在运行像批处理使用者一样消费的消费者。

答案 1 :(得分:0)

我和你有同样的问题。关键是,当关闭时,Camel倾向于暂停消费者而不是关闭消费者。目前RabbitMQ使用者没有实现suspend()方法。问题将在版本2.16.2中修复