如何在外部更新camel属性?

时间:2014-05-17 16:36:10

标签: java spring apache-camel jbossfuse hawtio

我正在开发非OSGI应用程序,我需要更新camel路由中使用的一些属性的值(加载BridgePropertyPlaceHolder)。 所以我想:

  • 使用Cooltio管理控制台Hawtio,使用JMX更新驼峰

  • 创建一个将更新属性的JMX MBean ..

我成功创建了MBean操作并使用JMX调用它们,但我无法弄清楚如何更新依赖于这些属性的camel路由。

有没有办法在外部更新驼峰上下文?

更新 用例的例子:当远程服务器没有返回响应时,我们会一直发送消息,直到达到不成功尝试的最大值(没有确认的消息)。 在camel中,我们根据从文件系统加载的属性创建路由器模式。 这个属性可以偶尔改变,我们希望在不重启服务器的情况下这样做,但问题是在启动上下文时骆驼解析路由,我无法找到相应更新路由的意思。


我很感激任何可能有帮助的建议:)

3 个答案:

答案 0 :(得分:0)

对于你希望它们是动态的属性。你可以将这些道具移动到某个数据库并在你阅读时获取它们。我认为你的骆驼路线需要重新设计。

答案 1 :(得分:0)

更改from端点参数(例如网址等),必须根据dynamic change endpoint camel使用以下程序:

  1. 停止路线
  2. 删除路线
  3. 更改端点
  4. 添加路线
  5. 启动路线
  6. 如果to端点必须是可配置的,则可以使用recipient list组件。在这里,您可以使用适当的Camel组件从数据库和/或文件系统中读取属性。

答案 2 :(得分:0)

如果您使用Camel错误处理重试(重新发送),那么您可以使用retryWhile继续重试,直到您返回false。这允许您使用Java代码等,并允许您阅读更新的配置选项。

详情请见

如果您有一本Camel in Action手册,请参阅第152页