【问题标题】:Starting and stopping Apache Camel routes from admin UI从管理 UI 启动和停止 Apache Camel 路由
【发布时间】:2014-08-08 12:17:09
【问题描述】:

我有一个 Apache Camel 上下文,它是大型 Spring 应用程序的一部分。该应用程序具有基于 Web 的管理 UI。我希望能够从此 UI 中停止/启动/暂停/恢复骆驼路线。我怎样才能做到这一点?

目前我的 Camel 上下文是在 Spring 上下文文件中定义的,并在部署 Spring 应用程序时自动启动。我的路由是在扩展 SpringRouteBuilder 的 Java 类中定义的。

我有:

骆驼上下文.xml:

<beans>

    <!--bootstrap camel context-->
    <camelContext xmlns="http://camel.apache.org/schema/spring">
        <package>com.package</package>
    </camelContext>

</beans>

在主 Spring 上下文中导入。然后我有在 com.package 中扩展 SpringRouteBuilder 的类

有没有更好的方法来做到这一点,以便我可以在 UI 中有事件时以编程方式控制 Camel 上下文?

【问题讨论】:

  • 是你的代码中没有访问骆驼上下文的问题吗?否则骆驼上下文有方法来获取路线,以及停止和启动它们。你也可以使用camel JMX接口来做同样的事情。
  • 是的,我无权访问 Camel 上下文。
  • 我正在考虑使用 OnCompletion 并编写一个处理器来检查数据库字段并在必要时在 Camel 上下文上调用 stop。对这种方法有什么意见吗?
  • 看看骆驼JMX方法。这将允许您直接在路线等上调用停止。
  • 我已经意识到 Camel 上下文只是一个 bean,可以根据需要自动装配和使用。见camel.465427.n5.nabble.com/…

标签: java spring apache-camel


【解决方案1】:

您也可以像我们在 hawtio (http://hawt.io/) 中所做的那样,我们使用 REST 调用来远程管理 Camel 应用程序,因此我们可以控制路由、查看统计信息、查看路由等等。通过使用一个名为 jolokia (http://jolokia.org/) 的优秀库,这一切变得更加容易,它使 JMX 公开为 REST 服务。每个 JMX 操作/属性都可以作为 URI 模板通过 REST 轻松调用。数据为json格式。

您可以构建仅使用 REST 进行通信的 UI 控制台,并且不依赖于 Java 或 JMX 世界等。

CamelContext 上的 Java API 还允许您控制路线。还有更详细的控制总线 EIP:http://camel.apache.org/controlbus

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-01
    • 1970-01-01
    • 2018-07-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-29
    相关资源
    最近更新 更多