У меня есть динамическая конечная точка с .recipientList(), и я хочу изменить конечную точку в случае исключения. Вот мой пример:
onException(IOException.class)
.maximumRedeliveries(2)
.onRedelivery(urlChangeProcessor)
.process(failureProccessor);
from("direct:foo")
.recipientList(simple("cxf:${exchangeProperty.targetUrl}?dataFormat=POJO"));
В исключительных случаях перед повторной доставкой "urlChangeProcessor" обновляет свойство "targetUrl" с правильным URL-адресом, но попытка повторной доставки по-прежнему выполняется на неверный URL-адрес.
Нельзя ли изменить целевую конечную точку при повторной доставке? Если нет, то какое элегантное решение? Мой текущий обходной путь — это doTry/doCatch, изменение свойства в doCatch и повторная отправка его в ту же конечную точку.
Я использую верблюд 2.15.3
Заранее спасибо!
javaonException(ValidationException) .handled(true);
, чтобы верблюд не пытался сделать то же самое, вместо этого используйте процессор изменения URL. Проверьте здесь camel.apache.org/exception-clause.html - person pvpkiran   schedule 24.11.2017.handled(true)
помечает обмен как обработанный, поэтому вызывающая сторона не получает исключение, и обмен может быть перенаправлен на другую конечную точку. Насколько мне известно, это происходит после исчерпания повторных попыток. Но я хочу изменить URL-адрес при каждой попытке повторной доставки. - person Steffen E   schedule 24.11.2017