如何告诉骆驼重新获得某些业务逻辑?

时间:2014-04-25 12:07:44

标签: exception soap cxf apache-camel

我想知道如何告诉骆驼根据业务逻辑重新发送我的信息。

我的路由是调用soap端点,并且根据服务器返回的消息,我需要在几秒钟内安排重试。

基本上,我配置了这种错误处理:

onException(Throwable.class)
    .handled(true)
    .processRef("exceptionHandler")
    .redeliveryDelay(5000)
    .maximumRedeliveries(1)
    .to("file://

我的exceptionHandler检查异常是否为SOAP Fault,解组它并根据我需要安排重试的内容。

无论如何在骆驼中做到这一点?

1 个答案:

答案 0 :(得分:1)

嗯,最后,这是我的解决方案:

from("...")
    .doTry()
        .to("...")
    .doCatch(Exception.class)
         .beanRef("handleException")
    .end()
    .beanRef("handleRegularResponse");

处理器handleException处理异常,尝试理解该问题,然后抛出更精确的异常。在我的例子中,它可以抛出两种类型的异常:不需要重新发送的FunctionalException,以及我将在几分钟内尝试重新发送的TechnicalException。

然后我就要为这个特定的异常声明一个错误处理程序:

onException(TechnicalException.class)
    .handled(true)
    .redeliveryPolicyRef("...")
    .useOriginalMessage();

HIH