Apache camel 从自定义组件添加的驼峰路线不会启动

Apache camel 从自定义组件添加的驼峰路线不会启动,apache-camel,Apache Camel,我正在使用Camel 2.19.1 我正在编写一个定制的Camel组件。它只对制作人有用。组件通过使用调用另一组路由的异步处理器与另一个系统交互。我从组件的onCamelContextStarted()添加另一组路由: 当我对此运行测试时,我可以看到正在创建其他路由,并且调用了configure()。但显然,这些路线还没有开始。发送给其中一个的交换将挂起 如何启动其他路由?啊,好的,但您不能添加新路由,也不能从此回调启动新路由。此回调在Camel启动其现有路由时触发,并且具有一种“故障保护”模式

我正在使用Camel 2.19.1

我正在编写一个定制的Camel组件。它只对制作人有用。组件通过使用调用另一组路由的异步处理器与另一个系统交互。我从组件的onCamelContextStarted()添加另一组路由:

当我对此运行测试时,我可以看到正在创建其他路由,并且调用了
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));
    }
}