骆驼交换失败,没有例外

时间:2018-05-30 08:48:39

标签: apache-camel spring-camel

从Camel 2.1升级到2.17并进行了一些代码修改后,我们遇到了Camel异常处理的一些问题。我们从应用程序A向应用程序B发送消息。快乐的流程工作正常,但不愉快的流程没有。

我们发送消息导致异常,但在onexception块中未正确处理。

实际上,我们看到以下tracelog:ProcessTaskEx - message received,但我看不到:ProcessTaskEx - exception

我们从Camel获得的例外是:

camel exchange failed without an exception: <SOAP-ENV:Fault xmlns:SOAP-ENV>

我们的路线看起来像这样,任何想法可能是什么问题?非常感谢您的时间社区! :)

<?xml version="1.0" encoding="ASCII"?>
<routes xmlns="http://camel.apache.org/schema/spring">
    <route>
        <from uri="switchyard://ProcessTaskEx"/>
        <log message="ProcessTaskEx - message received: ${body}" loggingLevel="DEBUG" logName="WebServiceQueues" />
        <to uri="switchyard://RequestCapacity"/>
        <onException>
            <exception>java.lang.Exception</exception>
             <exception>webservicequeues.utilities.WebServiceQueueException</exception>

            <log message="ProcessTaskEx - exception" loggingLevel="DEBUG" logName="WebServiceQueues" />
            <redeliveryPolicy maximumRedeliveries="2" redeliveryDelay="60000" maximumRedeliveryDelay="900000" retriesExhaustedLogLevel="INFO" retryAttemptedLogLevel="INFO"/>
            <handled>
                <constant>true</constant>
            </handled>

            <log message="Failed after Retry.Sending ProcessTask Request to Error Queue" loggingLevel="ERROR" logName="WebServiceQueues" />
            <to uri="switchyard://ErrorProcessTaskExQueue"/>
        </onException>
    </route>
</routes>

1 个答案:

答案 0 :(得分:0)

就像我记得的那样,默认情况下不会处理错误。要启用此功能,必须设置属性:handleFault="true"。可以为整个Camel上下文或单个路径设置它。

XML格式的路由示例:

<route handleFault="true">
...
</route