我有一个带有.recipientList()的动态端点,我想在发生异常时更改端点。这是我的例子:
createNewContact()
在重新传递之前的异常情况下,“urlChangeProcessor”使用正确的URL更新“targetUrl”属性,但仍然尝试重新传递尝试到错误的URL。
在重新发送时是否无法更改目标端点?如果没有,什么是优雅的解决方案?我目前的解决方法是doTry / doCatch,更改doCatch中的属性并再次将其发送到同一端点。
我使用camel 2.15.3
提前致谢!
答案 0 :(得分:1)
由于这是不可能的,我的解决方案是删除onException
并添加doTry/doCatch
:
from("direct:foo")
.doTry()
.to("direct:out")
.doCatch(IOException.class)
.process(urlChangeProcessor)
.to("direct:foo")
.end();
from("direct:out")
.recipientList(simple("cxf:${exchangeProperty.targetUrl}?dataFormat=POJO"));
添加一些条件,这样就不会以无限循环结束。