Как приостановить верблюжьи маршруты только в промежутке времени - PullRequest
0 голосов
/ 08 мая 2019

Приложение, над которым я работаю, является промежуточным программным обеспечением Apache Camel, которое обрабатывает взаимодействия между несколькими приложениями. Я постараюсь обобщить проблему, с которой мы сталкиваемся.

Маршрут 1:

  • Всякий раз, когда происходит изменение в «Приложении 1», наше приложение уведомляется с помощью различных событий SOAP, тогда наше приложение выполнит некоторые действия.

  • Этот «маршрут 1» начинается с конечной точки SOAP, а НЕ с планировщиком.

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

Маршрут 2:

  • Когда клиент помещает текстовый файл во входную папку, обработка начинается.

  • Проблема заключается в том, что после завершения этой процедуры в «Приложении 1» произойдут некоторые изменения, и наше приложение рискует получить некоторые нежелательные уведомления через «Маршрут 1». Обратите внимание, что такие виды уведомлений всегда необходимы для бизнес-требований, НО они не только после этого исправления.

  • Итак, мы думаем о запуске исправления в нерабочее время: клиент сам поместит txt-файл во входную папку с 19:00 до полуночи.

Вопрос: как мы можем автоматически деактивировать « Маршрут 1 » на время исправления (между 7 вечера и полуночи), а затем автоматически возобновить этот « Маршрут 1 » после исправления

Спасибо за вашу помощь.

Приложение 1 уведомляет нас по маршруту 1:

from("soapEndpoint")
    .routeId("route1")
    .process(treatment 1)
    .end();

Исправление, обработка 2 может сопровождаться некоторыми изменениями в Приложении 1, которые генерируют события, которые прослушиваются Маршрутом 1:

from("fileEndpoint")
    .routeId("route2")
    .process(treatment 2)
    .end();

1 Ответ

0 голосов
/ 13 мая 2019

Вы можете настроить политику маршрутизации по расписанию, чтобы останавливать и запускать маршрут в определенное время.См. SimpleScheduledRoutePolicy

...