我正在将apache camel路由从XML转换为基于Java的过程。在XML中,我可以使用ref属性引用来自另一个路由器的路由器,如下面的小代码片段:
<route>
<from ref="process"/>
<to ref="logging"/>
</route>
<route>
<from ref="logging"/>
<to uri="bean:xyz?method=hello"/>
</route>
现在,如果我使用Java,我无法找到如何从其他路由器引用路由器的选项。
@Bean (name = "loggingRouter")
RoutesBuilder loggingRouter() {
return new RouteBuilder() {
@Override
public void configure() throws Exception {
from("xyz")
.bean(abc, "log");
}
};
}
我想在其他路由中使用Java引用上面创建的路由。我该怎么做?我在春季启动1.4.3和骆驼2.18.1。
更新问题,因为我无法在评论中添加代码段,
我们在java类中有多个RoutesBuilder,我们根据条件
创建每个@Bean (name = "abc")
@ConditionalOnProperty (name = "someproperty", havingValue = "true")
RoutesBuilder directSMSRouter() {
return new RouteBuilder() {
@Override
public void configure() throws Exception {
from("direct:sendSMS")
.bean(abc, "sendSmsMessage");
}
};
}
@Bean (name = "xyz")
@ConditionalOnExpression ("'${someproperty1}'.equalsIgnoreCase('true') ||" +
"'${someproperty2}'.equalsIgnoreCase('true') ||" +
"'${someproperty3}'.equalsIgnoreCase" +
"('true') || '${someproperty4}'.equalsIgnoreCase('true') ")
RoutesBuilder directEmailRouter() {
return new RouteBuilder() {
@Override
public void configure() throws Exception {
from("direct:sendEmail")
.bean(xyz, "sendMessage");
}
};
}
我们可以在configure方法中创建多个路由,但我的问题是如何在RoutesBuilder bean中引用一个路由创建其他路由不同的RoutesBuilder
答案 0 :(得分:0)
首先,这个java代码正在创建一个RouteBuilder。我认为您的应用程序中不能有多个RouteBuilder。你在configure方法中做的是创建路由。您可以在configure方法中编写所需的路由。你可以写另一行,比如。
from("blah blah").to("xyz")
这应该为这个过程服务。 看看Spring RouteBuilder