Есть ли в Apache Camel какой-либо встроенный механизм для отсрочки следующего времени запуска маршрута при возникновении исключения во время обработки последнего маршрута?
Например, если у меня есть маршрут:
- запуск каждые 5 секунд
- выборка данных из базы данных
- обработка данных и создание сообщения
- отправка сообщения на удаленный экземпляр ActiveMQ
Я хочу иметь возможность обрабатывать этот сценарий:
Если база данных или ActiveMQ выйдет из строя (обслуживание или некоторые проблемы с сетью), вызывая исключения во время обработки маршрута, я хочу временноЗадержка в следующий раз, когда будет запущен маршрут (например, подождите 5 минут, прежде чем запускать снова, что даст некоторое время для перезапуска базы данных \ activemq) и переключитесь обратно на 5 секунд запуска, когда маршрут обрабатывается без исключений снова.Или даже постепенно увеличивайте время ожидания следующего запуска при каждой неудачной попытке обработки без сбоев (1 минута / 5 минут / 10 минут) и переключайтесь на значение по умолчанию, равное 5 секундам, когда все в порядке.
Я могу построить свой собственныйВременное решение с использованием процессоров, обработчиков onException
, некоторого массива для запоминания текущего состояния задержки на идентификатор маршрута и choice()
предикатов, которые пропускают весь маршрут, если он задерживается, но, возможно, в Apache Camel * 1024 есть некоторый встроенный механизм* как это звучит как обычный сценарий использования?