Apache camel 从自定义组件添加的驼峰路线不会启动
我正在使用Camel 2.19.1 我正在编写一个定制的Camel组件。它只对制作人有用。组件通过使用调用另一组路由的异步处理器与另一个系统交互。我从组件的onCamelContextStarted()添加另一组路由: 当我对此运行测试时,我可以看到正在创建其他路由,并且调用了Apache camel 从自定义组件添加的驼峰路线不会启动,apache-camel,Apache Camel,我正在使用Camel 2.19.1 我正在编写一个定制的Camel组件。它只对制作人有用。组件通过使用调用另一组路由的异步处理器与另一个系统交互。我从组件的onCamelContextStarted()添加另一组路由: 当我对此运行测试时,我可以看到正在创建其他路由,并且调用了configure()。但显然,这些路线还没有开始。发送给其中一个的交换将挂起 如何启动其他路由?啊,好的,但您不能添加新路由,也不能从此回调启动新路由。此回调在Camel启动其现有路由时触发,并且具有一种“故障保护”模式
configure()
。但显然,这些路线还没有开始。发送给其中一个的交换将挂起
如何启动其他路由?啊,好的,但您不能添加新路由,也不能从此回调启动新路由。此回调在Camel启动其现有路由时触发,并且具有一种“故障保护”模式,即新路由不会启动
因此,您需要使用另一种添加和启动路由的方式。啊,好的,但是您不能添加新路由,也不能从该回调启动新路由。此回调在Camel启动其现有路由时触发,并且具有一种“故障保护”模式,即新路由不会启动
因此,您需要使用另一种添加和启动路由的方法。我通过从我的组件(在doStart()中)创建一个单独的CamelContext并启动它来实现这一点。很高兴听到建议,但在这一点上,它或多或少是起作用的。我通过从我的组件(在doStart()中)创建一个单独的CamelContext并启动它来实现这一点。很高兴听到建议,但在这一点上,它或多或少起作用。您使用哪种版本的Camel Camel版本2.19.1您使用哪种版本的Camel Camel版本2.19.1任何建议?这些管线由自定义构件添加。也许让自定义组件创建并启动自己的camel上下文?您可以使用EventNotifier并对CamelContextStartedEvent做出反应,在该事件中您可以添加路由。我记录了一张票证,以便在下一个大版本中添加此StartupListener的扩展:有什么建议吗?这些管线由自定义构件添加。可能让自定义组件创建并启动自己的camel上下文?您可以使用EventNotifier并对CamelContextStartedEvent做出反应,在该事件中您可以添加路由。我记录了一张票证,以便在下一个大版本中添加此StartupListener的扩展:
@Override
public void onCamelContextStarted(CamelContext context, boolean alreadyStarted) throws Exception {
if (!alreadyStarted) {
context.setUseMDCLogging(true);
context.addRoutes(context.getInjector().newInstance(OtherRoutes.class));
}
}