public class RouteBuilderA extends RouteBuilder {
@Override
public void configure() {
from("timer:myTimer?fixedRate=true&period=1000")
.setBody().constant("ROUTE A")
.log("${body}")
.to(RouteBuilderB.INPUT);
}
}
RouteBuilderB.java
public class RouteBuilderB extends RouteBuilder {
public static final String INPUT = "direct:input";
@Override
public void configure() {
from(INPUT)
.setBody().constant("ROUTE B")
.log("${body}");
}
}
MainRouteBuilder.java
public class MainRouteBuilder extends RouteBuilder {
@Override
public void configure() throws Exception {
getContext().addRoutes(new RouteBuilderA());
getContext().addRoutes(new RouteBuilderB());
}
}
2条答案
按热度按时间hc2pp10m1#
正如Screwtape所评论的,你可以有任意多个
RouteBuilder
类来构建1个CamelContext
。因为你使用Direct Routes,所以它们需要在同一个CamelContext
中,如果它们在同一个部署单元中,这通常是正确的。如果您使用Spring-Boot and the Camel-Starter,则即使您将
RouteBuilder
声明为@Component
,它们也会被自动发现。不同
RouteBuilder
中的simple example with multiple Direct Routes0kjbasz62#
我也想知道这个问题的答案,但我也找不到任何例子--所以我试着做了一个概念验证(使用Camel 3):
RouteBuilderA.java
RouteBuilderB.java
MainRouteBuilder.java
我还没有研究使用这个设置的缺点,即它对错误处理、消息交换模式等意味着什么,但这似乎是一个开始。