如何在外部更新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等)进行更改 :
- 停止路线
- 删除路线
- 更改端点
- 添加路线
- 开始路线
如果to
端点必须是可配置的,则可以使用收件人列表组件。 在这里,您可以使用适当的Camel组件从数据库和/或文件系统中读取属性。