Я очень плохо знаком с Apache верблюдом, у меня есть ситуация, когда мне нужно выполнить действие ниже
Всякий раз, когда я получаю указанный c тип исключения, мне нужно повторить полный маршрут снова, Но я сталкиваюсь с проблемой исключения обработки циклических ошибок и бесконечной рекурсии при реализации с использованием onException.
Ниже приведен мой фиктивный код
from("direct:updateTheTask")
.to("direct:getWoTaskDetail")
.to("direct:getSoTaskDetail")
.to("direct:updateTaskDetail")
.to("direct:getSoTaskDetail")
.to("direct:getWoTaskDetail")
.to("direct:endRoute");
from("direct:updateTaskDetail").routeId("updateTaskDetail")
.bean(BEAN, Constants.SET_PARAMS)
.to("direct:restUpdate")
.to(getGetResponseBeanUrl(BEAN));
У меня есть вызов к маршруту "direct: updateTheTask" и "direct: updateTaskDetail" дает исключение в моем случае, когда получено исключение, я хочу повторить попытку из "direct: updateTheTask", поддерживая / сохраняя данные в обмен.
Когда во время этой рекурсии "direct: updateTaskDetail" не генерирует такое исключение, маршрут должен быть завершен нормально.
Я использовал метод ниже 2, но, похоже, он не работает для меня.
onException(TaskException.class)
.handled(true)
.maximumRedeliveries(-1)
.redeliveryDelay(20);
Другой подход
onException(TaskException.class)
.handled(true)
.delay(20)
.to("direct:updateTheTroubleTicket");