Apache Таймер Camel Quartz2, запускающий несколько обменов - PullRequest
0 голосов
/ 24 января 2020

У меня есть приложение, которое создает маршруты для подключения к конечной точке REST и обработки ответов для нескольких поставщиков. Каждый маршрут запускается с помощью кварцевого таймера. Недавно, когда таймер срабатывает, он создает несколько обменов вместо одного, и я не могу определить, что его вызывает.

Метод создания маршрутов здесь:


    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

Когда я должен (и привык) видеть только один из них.

Есть идеи, что могло бы вызвать это?

Спасибо!

Ответы [ 2 ]

0 голосов
/ 24 января 2020

Я так пристально смотрел, что пропустил очевидное. Мне нужно 0 в секундах вместо выражения cron.

Спасибо за потраченное время.

0 голосов
/ 24 января 2020

Это из-за вашей vendorCron

  • Если триггер Cron каждые 5 секунд, то вы будете видеть этот журнал каждые 5 секунд.
  • Если триггер Cron каждые 5 минут / часов вы видите эти логин в течение 5 минут / часов.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...