Построить верблюжий маршрут по таймеру и прямому маршруту - PullRequest
0 голосов
/ 04 июля 2019

Я хочу реализовать маршрут с верблюдом, чтобы удовлетворить два требования соответственно:

  • Начать маршрут в определенное время дня (3 часа ночи) с кварцем
  • Использовать из другого маршрута(direct: myOtherRoute)

У меня уже есть маршрут, который использует прямой: myOtherRoute, то, что я хочу получить сейчас, это добавление таймера запуска.

from("direct:myOtherRoute")
            .marshal()
            .zipFile()
            .setHeader(Exchange.FILE_NAME, constant(endpointsURLs.get(EXTRACT_ZIP_FILENAME)))
            .log("Generate ZIP")
            .to("file:" + endpointsURLs.get(EXTRACT_ZIP_DIR) + "?doneFileName=" + endpointsURLs.get(EXTRACT_ZIP_TRIGGER));

Ответы [ 2 ]

0 голосов
/ 08 июля 2019

Пожалуйста, взгляните на:

Apache Camel: Quartz2

package com.test.camel.quartz2;

import org.apache.camel.spring.SpringRouteBuilder;
import org.springframework.stereotype.Component;

@Component
public class QuartzTest extends SpringRouteBuilder {

    @Override
    public void configure() throws Exception {

        from("quartz2://myGroup/myTimerName?cron=0+0+3+?+*+*+*").to("direct:myOtherRoute");

        from("direct:myOtherRoute").log("Running");
    }

}

Я добавил полный тестовый класс, который можно использовать с пружиной.загрузки.Не забудьте импортировать зависимость maven!

Бонус: чтобы создать шаблон cron, вы можете использовать следующий веб-сайт cron-expression-generator-quartz и не забудьте заменить пробелы символом "+", как указанона странице Camel Quartz2


ПРИМЕЧАНИЕ. Если вам нужна совместимость с кварцем 1.x, используйте следующее: Apache Camel: Quartz

0 голосов
/ 08 июля 2019

грязный способ справиться с этим - запустить TimerTask в вашем Camel Builder и добавить addRouteDefinitions или suspendRoute ваш маршрут. если ваша проблема не решена, скажите показать мою цель.

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