将 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 的解决方法:

  1. 在 camelContext 定义中我设置了 autoStart="false"
  2. 在我应该使用全局骆驼定义的项目中,我添加了一个 spring bean,它同时实现了 ApplicationListener and CamelContextAware
  3. 在这个 bean 中,我从 camel 上下文中获取所有路由定义——包括在另一个 project/context 文件中定义的路由定义。所以我遍历所有路由定义并使用 Camel adviceWith 特性添加 interceptFrom、onException 等。
  4. 然后我用 context.startAllRoutes() 开始所有路线。

有效:-)