使用routeId定义为route1,route2和 的以下路由配置,我们故意省略第3条路线的routeId .Camel会自动生成格式为routeId的routeId如果你没有定义它,请指望你。
这似乎导致一些路由被遗漏,因为camelContext在内部存储具有Set结构的路由。想在这里加倍证实我的理解。 我可以知道是否有人遇到过同样的情况?
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);
答案 0 :(得分:2)
路线定义:
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"
,那么一切都按预期工作。
修改强>
我打开了一个错误报告:CAMEL-7986。