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