[英]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.