【发布时间】:2015-05-22 12:07:59
【问题描述】:
我在 camelcontext 中使用默认关闭策略。该路由从一个rabbitmq 消费者开始,该消费者从一个包含超过10k 条消息的队列中消费。当我停止路由时,消费者会继续使用队列中的新消息。因此,飞行中的交换计数永远不会减少,并且路由会等待关闭,直到默认超时值(300 秒)。有没有办法改变这种行为?基本上停止rabbitmq消费者在关闭时消费新消息。
【问题讨论】:
标签: apache-camel rabbitmq
我在 camelcontext 中使用默认关闭策略。该路由从一个rabbitmq 消费者开始,该消费者从一个包含超过10k 条消息的队列中消费。当我停止路由时,消费者会继续使用队列中的新消息。因此,飞行中的交换计数永远不会减少,并且路由会等待关闭,直到默认超时值(300 秒)。有没有办法改变这种行为?基本上停止rabbitmq消费者在关闭时消费新消息。
【问题讨论】:
标签: apache-camel rabbitmq
在路由关闭期间保持超时是一个好主意,因为它会留出时间优雅地关闭你的路由,如果它不能优雅地关闭,那么它将强制它完成。以下是有关使用默认关闭策略的更多信息的几个链接。
http://camel.apache.org/graceful-shutdown.html
在最后一个链接中,我建议您查看文档的 ShutdownRunningTask 部分,因为它接缝您正在运行一个像批处理消费者一样消费的消费者。
【讨论】:
我和你有同样的问题。关键是在关闭时,Camel 更喜欢暂停消费者而不是关闭它们。目前 RabbitMQ 消费者没有实现 suspend() 方法。该问题将在 2.16.2 版本中修复
【讨论】: