Java Apache Camel quartz2计时器启动多个交换机
我有一个应用程序,它创建连接到REST端点的路由,并处理多个供应商的响应。每条路线都由quartz2定时器触发。最近,当计时器启动时,它会创建多个交换,而不是一个交换,我无法确定是什么导致了它 创建路由的方法如下所示:Java Apache Camel quartz2计时器启动多个交换机,java,spring-boot,apache-camel,quartz-scheduler,Java,Spring Boot,Apache Camel,Quartz Scheduler,我有一个应用程序,它创建连接到REST端点的路由,并处理多个供应商的响应。每条路线都由quartz2定时器触发。最近,当计时器启动时,它会创建多个交换,而不是一个交换,我无法确定是什么导致了它 创建路由的方法如下所示: public String generateRoute(String vendorId) { routeBuilders.add(new RouteBuilder() { @Override public
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
当我应该(并且习惯)只看到其中一个的时候
你知道这是什么原因吗
谢谢 这是因为您的
vendorCron
- 如果Cron触发器为每5秒一次,则每5秒会看到此日志
- 如果Cron触发器是每5分钟/小时一次,那么您将在5分钟/小时内看到这些登录
- 我盯着看得太厉害了,没有注意到明显的问题。我需要在cron表达式的秒处使用0
感谢您的时间。我没有意识到vendorCron字符串发布错误-星号丢失-它实际上是“*+5++*+*+*+*?”我编辑了原始帖子以修复此问题。