Camel路由如何调用在不同Camel上下文中运行的另一个路由

时间:2017-01-03 11:54:36

标签: java routes apache-camel

骆驼路由是否有可能在不同的Camel Context中调用另一条路由。

例如,我有一个带有路由routeA的camel context contextA和带有routeB的另一个camel context contextB。那么如何从routeA调用routeB?

2 个答案:

答案 0 :(得分:2)

您可以使用vm组件在CamelContext实例之间发送交换。 http://camel.apache.org/vm.html

答案 1 :(得分:1)

创建一个与vm:endpoint共享消费(from)的路由,并使用相同的端点名称从其他路由引用它。

  1. 将要共享的集成逻辑拆分为路由,并选择要从中使用的VM组件。
  2. 如果您的路由应使用与调用方相同的线程处理请求,请选择direct-vm:,否则如果您希望通过其他线程异步处理该交换,请选择vm:。  为端点提供一个在JVM中唯一的名称。

    在XML DSL中,编写如下:

    <route>
    <from uri="vm:logMessageToBackendSystem"/> <to uri="..."/>
    </route>
    

    在Java DSL中,您表达的内容与:

    相同
    from("vm:logMessageToBackendSystem").to(...);
    
    1. 使用相同的URI pre x从顶级路由中调用需要使用此逻辑的共享路由。
    2. 在XML DSL中,写下以下内容:

      <route>
          <from uri="..."/>
          <to uri="vm:logMessageToBackendSystem"/>
      </route>
      

      在Java DSL中,这写为:

      from(...).to("vm:logMessageToBackendSystem");