【问题标题】:Camel runtime timer change骆驼运行时计时器更改
【发布时间】:2014-02-14 01:18:41
【问题描述】:

我有一个关于骆驼和计时器的问题。我有几个计时器,其中一个我想在运行时更新。我正在使用 osgi 蓝图来配置适当的周期。 那么如何从路由中更改计时器(使用我知道的名称)?

【问题讨论】:

    标签: java apache-camel apache-servicemix


    【解决方案1】:

    计时器不允许在运行时更改,您需要停止路由,更新路由上的计时器端点,然后重新启动路由。

    尽管 Ralf 提到的内容可以提供帮助,因为这允许您从可以控制路由生命周期的 bean 访问 CamelContext。

    但也请参阅控制总线 EIP 关于这些事情

    如果您使用石英而不是计时器,那么它有一个 JMX API,允许在运行时更新其调度程序/触发器。我们在 hawtio 中执行此操作,因此您可以使用可视化 UI 进行更新

    您也可以使用石英 JMX API 从 Java 代码中做到这一点。

    我在 Apache Camel JIRA 跟踪器中记录了一张票,其想法是在未来改进 Camel,以便更轻松地更新计时器使用者:https://issues.apache.org/jira/browse/CAMEL-7153 - 然后在实施时您可以更轻松地做到这一点。

    【讨论】:

      【解决方案2】:

      您可以将 bean 添加到实现 org.apache.camel.CamelContextAware 的路由中。 Camel 将在启动时注入对上下文的引用。使用上下文,您可以获得 timer/quartz 端点的引用并更新其配置。

      我不知道这是否足以根据您的新句点/cron 表达式重新安排触发器。也许您必须将端点转换为 TimerEndpoint 并直接使用它,例如根据您的新计划设置一个新的 Timer 实例。

      【讨论】:

        猜你喜欢
        • 2016-05-10
        • 1970-01-01
        • 2021-05-26
        • 1970-01-01
        • 2012-05-14
        • 1970-01-01
        • 1970-01-01
        • 2014-11-02
        • 1970-01-01
        相关资源
        最近更新 更多