骆驼路由是否有可能在不同的Camel Context中调用另一条路由。
例如,我有一个带有路由routeA的camel context contextA和带有routeB的另一个camel context contextB。那么如何从routeA调用routeB?
答案 0 :(得分:2)
您可以使用vm组件在CamelContext实例之间发送交换。 http://camel.apache.org/vm.html
答案 1 :(得分:1)
创建一个与vm:endpoint共享消费(from)的路由,并使用相同的端点名称从其他路由引用它。
如果您的路由应使用与调用方相同的线程处理请求,请选择direct-vm:,否则如果您希望通过其他线程异步处理该交换,请选择vm:。 为端点提供一个在JVM中唯一的名称。
在XML DSL中,编写如下:
<route>
<from uri="vm:logMessageToBackendSystem"/> <to uri="..."/>
</route>
在Java DSL中,您表达的内容与:
相同from("vm:logMessageToBackendSystem").to(...);
在XML DSL中,写下以下内容:
<route>
<from uri="..."/>
<to uri="vm:logMessageToBackendSystem"/>
</route>
在Java DSL中,这写为:
from(...).to("vm:logMessageToBackendSystem");