Я очень новичок в Apache Camel, у меня есть ситуация, когда мне нужно выполнить действие ниже
Всякий раз, когда я получаю исключение определенного типа, мне нужно снова повторить полный маршрут, но я сталкиваюсь с проблемой исключения циклической обработки ошибок и бесконечной рекурсией при реализации с использованием 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");