【发布时间】:2020-01-23 21:08:07
【问题描述】:
我有一个应用程序,它创建路由以连接到 REST 端点并处理多个供应商的响应。每条路由都由一个quartz2 定时器触发。最近,当计时器触发时,它会创建多个交换,而不仅仅是一个,我无法确定是什么原因造成的。
创建路由的方法在这里:
public String generateRoute(String vendorId) {
routeBuilders.add(new RouteBuilder() {
@Override
public void configure() throws Exception {
System.out.println("Building REST input route for vendor " + vendorId);
String vendorCron = vendorProps.getProperty(vendorId + ".rest.cron");
String vendorEndpoint = vendorProps.getProperty(vendorId + ".rest.endpoint");
String vendorAuth = vendorProps.getProperty(vendorId + ".rest.auth");
int vendorTimer = Integer.valueOf(vendorId) * 10000;
GsonDataFormat format = new GsonDataFormat(RestResponse.class);
from("quartz2://timer" + vendorId + "?cron=" + vendorCron)
.routeId("Rte-vendor" + vendorId)
.streamCaching()
.log("Starting route " + vendorId)
.setHeader("Authorization",constant(vendorAuth))
.to("rest:get:" + vendorEndpoint)
.to("direct:processRestResponse")
.end();
};
});
return "direct:myRoute." + vendorId;
一个示例'vendorCron'字符串是
"*+5+*+*+*+?&trigger.timeZone=America/New_York".
当石英路由触发时,我在日志中看到这种类型的输出
15:39| INFO | CamelLogger.java 159 | Starting route 4
15:39| INFO | CamelLogger.java 159 | Starting route 4
15:39| INFO | CamelLogger.java 159 | Starting route 4
15:39| INFO | CamelLogger.java 159 | Starting route 4
15:39| INFO | CamelLogger.java 159 | Starting route 4
15:39| INFO | CamelLogger.java 159 | Starting route 4
15:39| INFO | CamelLogger.java 159 | Starting route 4
15:39| INFO | CamelLogger.java 159 | Starting route 4
15:39| INFO | CamelLogger.java 159 | Starting route 4
15:39| INFO | CamelLogger.java 159 | Starting route 4
当我应该(并且曾经)只看到其中一个时。
有什么想法会导致这种情况吗?
谢谢!
【问题讨论】:
标签: java spring-boot apache-camel quartz-scheduler