2016-07-04 136 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