将 Camel 上下文定义拆分为多个 files/jars
Split Camel Context definition into multiple files/jars
我需要将 camel 上下文定义拆分为多个 files/projects。我想要一个仅包含全局配置(如数据格式、onCompletion 处理程序、onException 处理程序、interceptFrom、操作路由)的文件和一个构建在其之上主要定义路由的文件。
我还没有找到任何方法来 adjust/extend 在另一个文件中完成 CamelContext 定义。有办法吗?
看起来像这样:
驼色-core.xml:
<camelContext id="camelContext">
<interceptFrom>
<log message="{$routeId} started" />
</interceptFrom>
</camelContext>
驼色-routes.xml:
<camelContext id="camelContext">
<route id="camelRoute1">
<from uri="vm:foo" />
<log message="camelRoute1 completed" />
</route>
</camelContext>
运行 camelRoute1:
时的期望输出
camelRoute1 started
camelRoute1 completed
这是可以做到的。
使用 <import resource="myCoolRoutes.xml"/>
查看文档 - http://camel.apache.org/how-do-i-import-routes-from-other-xml-files.html
我已经为我的案例找到了 Java DSL 的解决方法:
- 在 camelContext 定义中我设置了 autoStart="false"
- 在我应该使用全局骆驼定义的项目中,我添加了一个 spring bean,它同时实现了 ApplicationListener and CamelContextAware
- 在这个 bean 中,我从 camel 上下文中获取所有路由定义——包括在另一个 project/context 文件中定义的路由定义。所以我遍历所有路由定义并使用 Camel adviceWith 特性添加 interceptFrom、onException 等。
- 然后我用 context.startAllRoutes() 开始所有路线。
有效:-)
我需要将 camel 上下文定义拆分为多个 files/projects。我想要一个仅包含全局配置(如数据格式、onCompletion 处理程序、onException 处理程序、interceptFrom、操作路由)的文件和一个构建在其之上主要定义路由的文件。
我还没有找到任何方法来 adjust/extend 在另一个文件中完成 CamelContext 定义。有办法吗?
看起来像这样:
驼色-core.xml:
<camelContext id="camelContext">
<interceptFrom>
<log message="{$routeId} started" />
</interceptFrom>
</camelContext>
驼色-routes.xml:
<camelContext id="camelContext">
<route id="camelRoute1">
<from uri="vm:foo" />
<log message="camelRoute1 completed" />
</route>
</camelContext>
运行 camelRoute1:
时的期望输出camelRoute1 started
camelRoute1 completed
这是可以做到的。
使用 <import resource="myCoolRoutes.xml"/>
查看文档 - http://camel.apache.org/how-do-i-import-routes-from-other-xml-files.html
我已经为我的案例找到了 Java DSL 的解决方法:
- 在 camelContext 定义中我设置了 autoStart="false"
- 在我应该使用全局骆驼定义的项目中,我添加了一个 spring bean,它同时实现了 ApplicationListener and CamelContextAware
- 在这个 bean 中,我从 camel 上下文中获取所有路由定义——包括在另一个 project/context 文件中定义的路由定义。所以我遍历所有路由定义并使用 Camel adviceWith 特性添加 interceptFrom、onException 等。
- 然后我用 context.startAllRoutes() 开始所有路线。
有效:-)