Планирование верблюжьего маршрута для компонента google-pubsub - PullRequest
0 голосов
/ 18 февраля 2019

Apache Camel CronScheduledRoutePolicy не останавливает маршрут?

Я пытаюсь запустить и остановить мой маршрут, который читает из компонента google-pubsub и передает в источник данных JDBC (оракул).Я хочу делать это только в определенное время дня, поскольку база данных Oracle будет работать с 22:00 до 12:00 каждую ночь, в течение которых я не хочу, чтобы мой маршрут продолжал обрабатывать входящие сообщения pubsub, и хочу, чтобы он остановился.Но когда я пытаюсь это сделать, маршрут во время остановки говорит:

'{"severity": "WARN", "message": "oacrqScheduledRoutePolicy | Маршрут не находится в состоянии запуска / приостановки и не может быть остановлен.текущее состояние маршрута остановлено "} '

@Override
    public void configure() {
        CronScheduledRoutePolicy routePolicy = new CronScheduledRoutePolicy();
        routePolicy.setRouteStartTime("0 15 00 * * ?");
        routePolicy.setRouteStopTime("0 00 22 * * ?");
        System.out.println("am here!!");
        onException(Exception.class)
                .log(LoggingLevel.ERROR," Error processing message: ${header['CamelGooglePubsub.MessageId']} : ${exception}" )
                .to("log:app_error.log?level=DEBUG&showAll=true&showException=true")
                .markRollbackOnlyLast()
                .end();



        CamelContext camelContext= getContext();
        System.out.println("Route Status is" + camelContext.getRouteStatus("{{routeID}"));
        from("google-pubsub:{{google_project_name}}:{{google_pubsub_subscription}}"+
                "?concurrentConsumers={{concurrent_consumers}}"+
                "&maxMessagesPerPoll={{max_messages_per_poll}}"+
                "&connectionFactory=#googlePubsubConnectionFactory")
                .routeId("{{routeID}")
                .routePolicy(startPolicy)
                .noAutoStartup()

Я хотел, чтобы маршрут начинался, скажем, в 12:15 (routePolicy.setRouteStartTime (" 0 15 00 * *? ");

и заканчивается в routePolicy.setRouteStartTime ("0 00 22 * ​​*?");

Я правильно делаю это или должен использовать process () на маршруте, чтобы принудительно остановить его, как я могу это сделать?

Спасибо

1 Ответ

0 голосов
/ 26 февраля 2019

Пройдя через команду, я думаю, что это больше похоже на вопрос весенней загрузки, чем на вопрос о верблюдах.

Я не думаю, что использование компонента camel cron может сделать эту работу.Вы можете вызвать службу извне для завершения всего приложения весенней загрузки, запустив скрипт cron для отправки команды завершения работы приложению весенней загрузки из образа вашего установщика.

Вот пример что вы можете взять ссылку.

...