这是我的路线课程。
@Component
public class MyRoute extends RouteBuilder {
@Value("${spring.enablelog}")
public boolean enablelog;
@Value("${spring.enableroutepolicy}")
public boolean enableroutepolicy;
@Override
public void configure() throws Exception {
CronScheduleRoutePolicy routepolicy = new CronScheduleRoutePolicy();
routepolicy.setRouteStartTime("StartTime");
routepolicy.setRouteStoptTime("StopTime");
routepolicy.setRouteStartTime("StartTime");
from("activemq:queue:inputq")
.setProperty(Enablelog, constant(enablelog))
.choice().when(exchangeProperty(Enablelog).isEqualTo(True))
.bean(MyRoute.class, "setlogProperties('*', 'Request', 'Pending','Received Input message')")
.process(logProcessor).endChoice()
.process(msgProcessor).split().body()
.toD("activemq:queue:waitq")
.choice().when(exchangeProperty(Enablelog).isEqualTo(True))
.bean(MyRoute.class, "setlogProperties('*', 'Response', 'Waiting','Response message waiting to be delivered')")
.process(logProcessor).endChoice()
.end();
if (enableroutepolicy == true) {
from("activemq:queue:waitq").routePolicy(routepolicy).noAutoStartup()
.toD("activemq:queue:outputq")
.choice().when(exchangeProperty(Enablelog).isEqualTo(True))
.bean(MyRoute.class, "setlogProperties('*', 'Response', 'Success','Response message delivered')")
.process(logProcessor).endChoice()
.end();
} else {
from("activemq:queue:waitq").toD("activemq:queue:outputq")
.choice().when(exchangeProperty(Enablelog).isEqualTo(True))
.bean(MyRoute.class, "setlogProperties('*', 'Response', 'Success','Response message delivered')")
.process(logProcessor).endChoice()
.end();
}
}
public void setlogPoperties(Exchange exchange, String msgtype, String status, String statusMessage ) {
exchange.setrPoperty("MessageType", msgtype);
exchange.setrPoperty("Status",status);
exchange.setrPoperty("StatusMessage",statusMessage);
}
}
在这条路线中,我有两条路线
第一条路线始终处于激活状态,我正在根据需要激活第二条路线。在第二种方法中,我无法调用.bean()并将参数传递给setlogPoperties()。我是骆驼的新手,不确定如何解决此问题。任何帮助都将受到赞赏。
谢谢
答案 0 :(得分:0)
此问题的根本原因可能是没有从属性文件中获取“ enablelog”和“ enableroutepolicy”,并且由于布尔值的默认值为false,因此您的代码无法到达setlogPoperties()。
您已将该类注释为 @Component 。因此,为了使 @Value 从属性文件中检索值,请确保您自己定义了@PropertySource annotated in this class或创建了bean for this component in a separate @Configuration annotated class。