spring-boot - 无法在骆驼路线中使用 Bean 方法
问题描述
这是我的路线课程。
@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);
}
}
在这条路线中,我有两条路线
- 从 InQueue 到 WaitQueue
- 从 WaitQueue 到 OutQueue。
第一条路线始终处于激活状态,我正在根据要求激活第二条路线。在第二条路线中,我无法调用 .bean() 并将参数传递给 setlogPperties()。我是骆驼的新手,不知道如何解决这个问题。任何形式的帮助表示赞赏。
谢谢,
解决方案
此问题的根本原因可能是“enablelog”和“enableroutepolicy”未从您的属性文件中获取,并且由于布尔值的默认值为 false,您的代码无法访问 setlogPperties()。
您已将该类注释为@Component。因此,为了让@Value从属性文件中检索值,请确保您要么在此类本身中定义@PropertySource注释,要么在单独的@Configuration注释类中为此组件创建bean 。
推荐阅读
- html - 当我直接使用它们而不是css上的“奇数”和“偶数”时如何选择多个数字?
- python - Streamlit - 在线程中创建的 SQLite 对象只能在同一线程中使用
- java - Java 的公钥表示与 RFC 8410 之间的差异
- python - 字符串拆分功能期间列表超出范围
- c++ - Xcode 中的加速框架以获取 A 的 QR 分解但找不到 zgeqrf
- linux - 如何从终端定期运行命令(每 5 秒)
- reactjs - 在 reactjs 中显示菜单项后无法显示图标
- angular - 从角度请求 LinkedIn OAuth API 时出错
- python - PyQt5:使用不透明的小部件创建透明窗口
- python - 计算熊猫数据框中每一列中特定值的出现次数