我使用的是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的路线?
答案 0 :(得分:0)
好的但你无法添加并从此回调中启动新路由。当Camel启动其现有路由时会触发此回调,并且具有" failsafe"有点模式,新路线没有开始。
因此,您需要使用其他方式添加和启动路线。
答案 1 :(得分:0)
我通过从我的组件(在doStart()中)创建一个单独的CamelContext并启动它来实现这一点。很高兴听到建议,但此时它或多或少都在工作。