繁体   English   中英

Apache Camel:重新交付时修改端点

[英]Apache Camel: modify endpoint on redelivery

我有一个带有.recipientList()的动态端点,并且我想在发生异常的情况下更改该端点。 这是我的示例:

onException(IOException.class)
 .maximumRedeliveries(2)
 .onRedelivery(urlChangeProcessor)
 .process(failureProccessor);

from("direct:foo")
 .recipientList(simple("cxf:${exchangeProperty.targetUrl}?dataFormat=POJO"));

在重新交付之前的例外情况下,“ urlChangeProcessor”会使用正确的URL更新“ targetUrl”属性,但仍会尝试对错误的URL进行重新交付。

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

我用骆驼2.15.3

提前致谢!

由于这是不可能的,因此我的解决方案是删除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"));

添加一些条件,这样就不会导致无限循环。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM