【问题标题】:Camel ShutdownStrategy: Inflight Messages do not decreaseCamel ShutdownStrategy:飞行消息不会减少
【发布时间】:2015-05-22 12:07:59
【问题描述】:

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

【问题讨论】:

    标签: apache-camel rabbitmq


    【解决方案1】:

    在路由关闭期间保持超时是一个好主意,因为它会留出时间优雅地关闭你的路由,如果它不能优雅地关闭,那么它将强制它完成。以下是有关使用默认关闭策略的更多信息的几个链接。

    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 部分,因为它接缝您正在运行一个像批处理消费者一样消费的消费者。

    【讨论】:

    • 我确实设置了超时。问题是我的消费者在路线关闭时不会停止消费。这可以防止正常关闭。
    • 你能把你的代码贴在这里吗?同样只是为了验证,您的意思是,当您停止正在从队列中主动消费的骆驼消费者时,它不会停止,直到从队列中消费完所有消息?
    【解决方案2】:

    我和你有同样的问题。关键是在关闭时,Camel 更喜欢暂停消费者而不是关闭它们。目前 RabbitMQ 消费者没有实现 suspend() 方法。该问题将在 2.16.2 版本中修复

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-12-27
      • 1970-01-01
      • 2017-03-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-02
      • 1970-01-01
      相关资源
      最近更新 更多