如何在外部更新camel属性?

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

  • 要使用Cooltio管理控制台Hawtio,以便使用JMX更新camel

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

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

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

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


我很感激任何有助于:)的建议

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

查看更多详情

如果您有“Camel in Action”一书的副本,请参阅第152页

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

根据动态更改端点camel ,必须使用以下过程from端点参数(如URL等)进行更改 :

  1. 停止路线
  2. 删除路线
  3. 更改端点
  4. 添加路线
  5. 开始路线

如果to端点必须是可配置的,则可以使用收件人列表组件。 在这里,您可以使用适当的Camel组件从数据库和/或文件系统中读取属性。