同步骆驼路线

时间:2017-08-08 22:40:37

标签: apache-camel

我在单个camel包中部署了多个路由,我想要实现的是,一旦单个路由开始执行,其他路由不应该执行,直到启动的路由完成执行。

我知道有可能让包含我的路由的整个camelContext成为单线程,但我在性能方面看到了一个缺点。

有人有类似的用例,最好的解决方法是什么?由于我使用的是OSGi Blueprint DSL,因此欢迎使用任何示例。

1 个答案:

答案 0 :(得分:0)

如果您需要有选择地控制其他路线,例如启动和停止它们,您可以使用Camel的Control Bus

首先,您需要在启动应用程序时阻止执行所需的路由。这是通过路由定义中的autoStartup = false实现的:

<route id="foo" autoStartup="false">
   <from uri="activemq:queue:special"/>
   <to uri="file://backup"/>
</route>

然后在您正在运行的路线中您想要在完成任务后开始另一条路线时,只需:

<to uri="controlbus:route?routeId=foo&amp;action=start"/>

您还可以订购路线的启动(和关闭),详见Camel documentation here