2016-07-04 121 views
1

我想知道是否有可能从骆驼上下文返回全部或部分路由 - 我想使用Java进行配置,然后检索它将其导出到XML。返回骆驼路由配置到xml

有没有办法做到这一点?我还没有找到任何文件,我希望我错过了一些东西,并有一种方法。

+0

不知道我明白,你想在java dsl中配置路由,但使用蓝图xml导出它?我不认为你可以直接做到这一点。你可以这样做,如果你安装hawtio并在hawtio内运行骆驼路由。然后登录并查看路由,并以xml格式显示它们。 –

回答

2

是的,你正在寻找的是这个JMX MBean接口:
http://camel.apache.org/maven/current/camel-core/apidocs/org/apache/camel/api/management/mbean/ManagedCamelContextMBean.html#dumpRoutesAsXml()

基本上JMX默认情况下,在骆驼启用,所以你可以使用像JConsole的一个JMX控制台只连接到运行骆驼的JVM 。然后跟踪像org.apache.camel:context=...,type=context,name=...这样的CamelContext MBean并调用操作dumpRoutesAsXml()。并且您将获得Camel上下文中的所有路由为XML。

关于骆驼和JMX的更多信息,可参考本文档,以及:
http://camel.apache.org/camel-jmx.html

0

好的,您的问题仍然不清楚。

但有2个选项适合你。

  1. 蓝图容器接受热部署,这意味着您可以将骆驼XML放在一个文件夹中,它只会启动路由。它还取决于你正在尝试整合的系统类型,例如:为数据库相关的整合做这件事有点复杂。

  2. 您可以使用路由生成器,基本上可以在运行时创建路由并启动路由。

请在你的问题附近发表更多细节,以便更好地理解。如果你能清楚地解释你的需求,你甚至可能不需要这两种方法。

0

您可以使用

List<RouteDefinition> routes = camelContext.getRouteDefinitions(); 
    RoutesDefinition def = new RoutesDefinition(); 
    def.setRoutes(routes); 
    String xml = ModelHelper.dumpModelAsXml(camelContext, def); 

如果你想更换物业占位符,请参阅到方法ManagedCamelContext.dumpRoutesAsXml