Java Apache Camel 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

我有一个应用程序,它创建连接到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
当我应该(并且习惯)只看到其中一个的时候

你知道这是什么原因吗


谢谢

这是因为您的
vendorCron

  • 如果Cron触发器为每5秒一次,则每5秒会看到此日志
  • 如果Cron触发器是每5分钟/小时一次,那么您将在5分钟/小时内看到这些登录

    • 我盯着看得太厉害了,没有注意到明显的问题。我需要在cron表达式的秒处使用0


      感谢您的时间。

      我没有意识到vendorCron字符串发布错误-星号丢失-它实际上是“*+5++*+*+*+*?”我编辑了原始帖子以修复此问题。