Spring boot 无法在Camel路由中使用Bean方法
这是我的路线课Spring boot 无法在Camel路由中使用Bean方法,spring-boot,apache-camel,Spring Boot,Apache Camel,这是我的路线课 @Component public class MyRoute extends RouteBuilder { @Value("${spring.enablelog}") public boolean enablelog; @Value("${spring.enableroutepolicy}") public boolean enableroutepolicy;
@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);
}
}
在这条路线上,我有两条路线
谢谢,此问题的根本原因可能是没有从属性文件中提取“enablelog”和“enableroutepolicy”,并且由于布尔值的默认值为false,您的代码无法访问setlogPoperties() 您已将该类注释为@组件。因此,为了让@Value从属性文件中检索值,请确保您正在定义一个自身或创建一个