Apache Camel:在重新传递时修改端点

时间:2017-11-24 14:36:10

标签: java apache-camel

我有一个带有.recipientList()的动态端点,我想在发生异常时更改端点。这是我的例子:

createNewContact()

在重新传递之前的异常情况下,“urlChangeProcessor”使用正确的URL更新“targetUrl”属性,但仍然尝试重新传递尝试到错误的URL。

在重新发送时是否无法更改目标端点?如果没有,什么是优雅的解决方案?我目前的解决方法是doTry / doCatch,更改doCatch中的属性并再次将其发送到同一端点。

我使用camel 2.15.3

提前致谢!

1 个答案:

答案 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"));

添加一些条件,这样就不会以无限循环结束。