Обмен верблюда не удался без исключения - PullRequest
0 голосов
/ 30 мая 2018

После обновления с Camel 2.1 до 2.17 и некоторой модификации кода у нас возникли некоторые проблемы с обработкой исключений в Camel.Мы отправляем сообщение из приложения A в приложение B. Счастливый поток работает нормально, а несчастный поток - нет.

Мы отправляем сообщение, чтобы вызвать исключение, но оно неправильно обрабатывается в блоке onexception.

На самом деле, мы видим следующий след: 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 голосов
/ 01 июня 2018

Насколько я помню, ошибки не обрабатываются по умолчанию .Чтобы включить это свойство должно быть установлено: handleFault="true".Его можно установить для всего контекста Camel или для отдельных маршрутов.

Пример маршрута в XML:

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