Apache camel 未分配路线id时未检测到路线?CamelContext是否丢失路由信息?

Apache camel 未分配路线id时未检测到路线?CamelContext是否丢失路由信息?,apache-camel,Apache Camel,对于以下routeId定义为route1、route2和的路由配置,我们有意省略第三条路由的routeId。如果您没有定义,Camel将自动生成一个routeId,格式为route+count 这似乎会导致某些路由丢失,因为camelContext在内部以设置的结构存储这些路由。我想在此再次确认我的理解。 我可以知道是否有人遇到过同样的情况吗 from(INBOUND_ENDPOINT).routeId("route1") .setExchangePattern(

对于以下routeId定义为route1、route2和的路由配置,我们有意省略第三条路由的routeId。如果您没有定义,Camel将自动生成一个routeId,格式为route+count

这似乎会导致某些路由丢失,因为camelContext在内部以设置的结构存储这些路由。我想在此再次确认我的理解。 我可以知道是否有人遇到过同样的情况吗

    from(INBOUND_ENDPOINT).routeId("route1")
            .setExchangePattern(ExchangePattern.InOnly).threads(5)
            .bean(ThroughputMeasurer.class);

    from(OUTBOUND_ENDPOINT).routeId("route2")
    .setExchangePattern(ExchangePattern.InOnly).threads(5)
    .bean(ThroughputMeasurer.class);

    from("direct:processOrder").bean(
            ThroughputMeasurer.class);

你似乎发现了一个bug。我使用Camel v2.14.0进行了测试

路线定义:

 from("direct:start1")
     .routeId("route1")
     .log("route1: ${body}");

 from("direct:start2")
      .routeId("route2")
      .log("route2: ${body}");

 from("direct:start3") // no route id!
      .log("route3: ${body}");
测试:

 ProducerTemplate template = context.createProducerTemplate();
 template.sendBody("direct:start1", "World!");
 template.sendBody("direct:start2", "World!");
这导致以下例外情况:

原因:org.apache.camel.component.direct.DirectConsumerNotAvailableException:端点上没有可用的使用者:端点[direct://start1]

如果删除了
“direct:start3”
路由,或者重命名了ID
“route1”
,则一切都会正常工作

编辑:


我打开了一个错误报告:。

您是否说没有路由id的路由丢失或偶尔丢失,因此您的功能无法工作。请提高清晰度如何运行骆驼应用程序。Maven运行测试,或者在sevice mix或jboss fuseYup等容器中运行,似乎Camel只能检测重复的routeId,如果这些routeId是用routeId()方法定义的。