在骆驼语境中,我有几条路线和许多终点。因此需要获取由一个路由创建的所有端点:
CamelContext context = new DefaultCamelContext();
RouteBuilder route1 = new RouteBuilder() {
public void configure() {
from("file:data/inbox?noop=true")
.routeId("myRoute1")
.enrich("http://website.com/file.txt")
.to("file:data/outbox")
.to("mock:someway");
}
};
RouteBuilder route2 = new RouteBuilder() {
public void configure() {
from("file:data/outbox?noop=true")
.routeId("myRoute2")
.to("mock:myMom");
}
};
context.addRoutes(route1);
context.addRoutes(route2);
context.start();
// TODO
context.stop();
在停止之前,我需要获取所有由myRoute1创建的端点?例如:
1.file:// data / outbox 2.模拟:// someway 3。http://website.com/file.txt 4.file:// data / inbox?noop = true
我只能将骆驼上下文的所有端点获取为:context.getEndpoints()
答案 0 :(得分:2)
端点不与单个路由关联,因为它可以在多个路由之间重用。因此,您无法真正从端点本身中找出答案。但是您可以做的是,在添加路由之前,将所有端点存储在本地列表中,然后再获取所有端点,然后 diff 这两个端点列表。然后通过新路由添加所有新端点。
答案 1 :(得分:0)
您可以尝试以下操作:
从CamelContext的路由中获取RouteDefinition,并过滤ToDefinition对象的输出列表。
List<ProcessorDefinition> outputProcessorDefs = exchange.getContext().getRouteDefinition("[routeId]").getOutputs();
// Iterate and get all ProcessorDefinition objects which inherit from the ToDefinition