首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >获取有关VM中定义的所有CamelContext的信息

获取有关VM中定义的所有CamelContext的信息
EN

Stack Overflow用户
提问于 2014-03-28 15:46:58
回答 3查看 1.6K关注 0票数 0

我有一个系统,它动态地将骆驼上下文添加到正在运行的系统中。

从处理器内部检索有关上下文的信息是非常容易和方便的,但我没有想到比在处理器中定义的上下文更多地这样做的可能性。

是否有机会使用一个组件从所有上下文中检索状态?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-03-31 10:25:52

感谢彼特和克劳斯-易卜生!我采用了MBean方法。因为我停留在自己的VM中,所以我能够针对本地MBeanServer工作:

代码语言:javascript
复制
    List<Map<String, String>> values = new ArrayList<>();

    QueryExp qe = Query.isInstanceOf(new StringValueExp("org.apache.camel.management.mbean.ManagedCamelContext"));
    MBeanServer ms = ManagementFactory.getPlatformMBeanServer();
    Set<ObjectName> contexts = ms.queryNames(new ObjectName("org.apache.camel:*"), qe);

    for (ObjectName context : contexts) {

        Map<String, String> curMap = new HashMap<String, String>();

        AttributeList al = ms.getAttributes(context, attributes);
        List<Attribute> ale = al.asList();
        for (int i = 0; i < ale.size(); i++) {
            Attribute attribute = ale.get(i);

            String val = attribute.getValue() != null ? attribute.getValue().toString() : "";
            curMap.put(attribute.getName(), val);
        }

        values.add(curMap);
    }

使用例如attributes=new String[] { "CamelId", "MinProcessingTime", "MeanProcessingTime", "MaxProcessingTime" };,我可以检索我喜欢的信息。

骆驼在这一点上很棒;-)

票数 4
EN

Stack Overflow用户

发布于 2014-03-29 10:24:10

是的,正如Petter所说,您可以使用JMX。Apache公开了许多用于管理骆驼应用程序的JMX MBeans:http://camel.apache.org/maven/current/camel-core/apidocs/org/apache/camel/api/management/mbean/package-summary.html

不过,我还想指出的是,jolokia (http://jolokia.org/)使使用JMX更加容易,因为jolokia可以将JMX公开为REST服务。这使得客户端将该信息作为REST调用(例如通过HTTP)访问变得非常简单。

我们在hawtio控制台中使用这一点构建了一个用于管理HTML5应用程序的Java应用程序,该应用程序还有一个Camel插件。这允许我们使用这些REST服务来管理JVM或远程JVM中运行的所有Camels。

  • http://hawt.io/
票数 3
EN

Stack Overflow用户

发布于 2014-03-28 17:12:14

有一个很好的软件可以安装/卸载/启动/停止camel上下文,您可能会尝试:阿帕奇卡拉夫。有一些指南这里

也就是说,是的--您可以使用JMX轻松地访问其他骆驼上下文。上下文以MBeans的形式公开。您可能需要将JMX支持添加到动态运行时,这样才可能做到这一点。

您可以探索您有哪些选项,以及您的JMX公开是否可以使用j控制台。当然,您可以使用JMX api从代码中访问相同的操作。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22717446

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档