我想知道如何告诉骆驼根据业务逻辑重新发送我的信息。
我的路由是调用soap端点,并且根据服务器返回的消息,我需要在几秒钟内安排重试。
基本上,我配置了这种错误处理:
onException(Throwable.class)
.handled(true)
.processRef("exceptionHandler")
.redeliveryDelay(5000)
.maximumRedeliveries(1)
.to("file://
我的exceptionHandler
检查异常是否为SOAP Fault,解组它并根据我需要安排重试的内容。
无论如何在骆驼中做到这一点?
答案 0 :(得分:1)
嗯,最后,这是我的解决方案:
from("...")
.doTry()
.to("...")
.doCatch(Exception.class)
.beanRef("handleException")
.end()
.beanRef("handleRegularResponse");
处理器handleException
处理异常,尝试理解该问题,然后抛出更精确的异常。在我的例子中,它可以抛出两种类型的异常:不需要重新发送的FunctionalException,以及我将在几分钟内尝试重新发送的TechnicalException。
然后我就要为这个特定的异常声明一个错误处理程序:
onException(TechnicalException.class)
.handled(true)
.redeliveryPolicyRef("...")
.useOriginalMessage();
HIH