【问题标题】:How to update camel properties externally?如何从外部更新骆驼属性?
【发布时间】:2014-05-17 16:36:10
【问题描述】:

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

  • 使用 Hawtio,酷炫的管理控制台,以便使用 JMX 更新骆驼

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

我成功创建了 MBean 操作并使用 JMX 调用它们,但我不知道如何更新依赖于这些属性的骆驼路由。

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

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


感谢任何可以提供帮助的建议:)

【问题讨论】:

    标签: java spring apache-camel jbossfuse hawtio


    【解决方案1】:

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

    查看更多详情

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

        更改from端点参数如URL等,必须按照dynamic change endpoint camel使用以下程序:

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-05-31
          • 2014-05-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多