从我的自定义组件添加的Camel路由无法启动

时间:2017-11-01 22:40:35

标签: apache-camel

我使用的是Camel 2.19.1。

我正在编写一个自定义的Camel组件。它只做生产者。该组件通过使用调用另一组路由的异步处理器与另一个系统交互。我从我的组件的onCamelContextStarted()中添加了另一组路由:

@Override
public void onCamelContextStarted(CamelContext context, boolean alreadyStarted) throws Exception {
    if (!alreadyStarted) {
        context.setUseMDCLogging(true);
  context.addRoutes(context.getInjector().newInstance(OtherRoutes.class));
    }
}

当我对此进行测试时,我可以看到正在创建OtherRoutes并调用它configure()。但显然这些路线尚未开始。发送给其中一人的交易所就是挂起。

如何启动OtherRoutes的路线?

2 个答案:

答案 0 :(得分:0)

好的但你无法添加并从此回调中启动新路由。当Camel启动其现有路由时会触发此回调,并且具有" failsafe"有点模式,新路线没有开始。

因此,您需要使用其他方式添加和启动路线。

答案 1 :(得分:0)

我通过从我的组件(在doStart()中)创建一个单独的CamelContext并启动它来实现这一点。很高兴听到建议,但此时它或多或少都在工作。