Apache camel 获取有关VM中定义的所有上下文的信息
我有一个系统,它可以动态地向正在运行的系统添加Camel上下文 从处理器中检索有关上下文的信息非常容易和方便,但我没有想到在处理器定义的上下文之外还可以这样做Apache camel 获取有关VM中定义的所有上下文的信息,apache-camel,Apache Camel,我有一个系统,它可以动态地向正在运行的系统添加Camel上下文 从处理器中检索有关上下文的信息非常容易和方便,但我没有想到在处理器定义的上下文之外还可以这样做 是否有机会使用单个组件从所有上下文检索状态?有一个很好的软件,可以动态安装/卸载/启动/停止camel上下文,您可能希望尝试:。有一些准则 也就是说,是的-您可以使用访问其他Camel上下文。这些上下文作为MBean公开。您可能需要将JMX支持添加到动态运行时中,以便实现这一点 您可以使用jconsole探索您有哪些选项,以及您的JMX暴
是否有机会使用单个组件从所有上下文检索状态?有一个很好的软件,可以动态安装/卸载/启动/停止camel上下文,您可能希望尝试:。有一些准则 也就是说,是的-您可以使用访问其他Camel上下文。这些上下文作为MBean公开。您可能需要将JMX支持添加到动态运行时中,以便实现这一点 您可以使用jconsole探索您有哪些选项,以及您的JMX暴露是否有效。当然,您可以使用从代码访问相同的操作。
是的,你可以像佩特说的那样使用JMX。Apache Camel公开了许多JMX MBean来管理Camel应用程序: 然而,我还要指出jolokia(),它使使用JMX变得更加容易,因为jolokia可以将JMX公开为REST服务。这使得客户端访问这些信息变得很简单,因为它只是一个REST调用(例如通过HTTP) 我们在hawtio web控制台中使用它来构建一个用于管理Java应用程序的HTML5 web应用程序,它也有一个Camel插件。这允许我们使用这些REST服务来管理JVM或远程JVM中运行的所有CAMEL
- 感谢@petter和@claus ibsen!我采取了MBean方法。因为我呆在自己的虚拟机内,所以我能够针对本地MBeanServer工作:
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);
}
List values=new ArrayList();
QueryExp qe=Query.isInstanceOf(新的StringValueExp(“org.apache.camel.management.mbean.ManagedCamelContext”);
MBeanServer ms=ManagementFactory.getPlatformMBeanServer();
Set contexts=ms.queryNames(新对象名(“org.apache.camel:”),qe);
for(ObjectName上下文:上下文){
Map curMap=newhashmap();
AttributeList al=ms.getAttributes(上下文,属性);
List ale=al.asList();
对于(int i=0;i
例如,attributes=newstring[]{“CamelId”、“MinProcessingTime”、“MeanProcessingTime”、“MaxProcessingTime”}代码>我可以检索我喜欢的信息
骆驼在这一点上很棒;-) 感谢MBean的提示!感谢JMX/MBean的提示!