骆驼通过jmx在运行时更改路由策略

时间:2013-05-05 20:26:29

标签: apache-camel jmx spring-jmx

是否可以在运行时更改路由策略?例如,如果我有以下代码

CronScheduledRoutePolicy startPolicy = new CronScheduledRoutePolicy();
startPolicy.setRouteStartTime("* 0 * * * ?");
startPolicy.setRouteStopTime("* 30 * * * ?");
from("direct:foo").routeId("myRoute").routePolicy(startPolicy).autoStartup(false).to("does://not-matter");

我想在camel执行期间更改cron参数。在JConsole中,我只能访问返回

的getRoutePolicyList
  

CronScheduledRoutePolicy(0x6dc7efb5)

是否有可能以某种方式访问​​ startPolicy 对象并使用新值重新实例化它?我是否用一些吸气剂和制定者来扩展mbean类的骆驼?

2 个答案:

答案 0 :(得分:0)

不,没有开箱即用。但是,将CronScheduledRoutePolicy注册为JMX MBean是一个很好的新功能,因此人们可以在运行时使用JMX进行调整。 我已经记录了一张票:https://issues.apache.org/jira/browse/CAMEL-6334

你可以做的是停止路线。然后调整startPolicy设置,然后再次启动路由。

有启动和停止路线的JMX操作。您可能需要的是公开一些JMX操作以调整cron策略。

答案 1 :(得分:0)

我设法使用hawt.io执行此操作。但为了实现这一点,您需要升级到Camel版本2.13.0。

使用hawt.io,您可以以非常用户友好的方式change cron expressions at runtime