обработка ошибок пружинной интеграции различных типов - PullRequest
0 голосов
/ 08 июня 2018

Я использую Spring Integration XML и хочу знать, как лучше всего справляться с обработкой ошибок.

Я подключаюсь к s3 с помощью s3-inbound-streaming-channel-adapter, а затем преобразую файл csv из корзины s3.

Возможные ошибки:

  1. Исключение преобразования может произойти, если строка в файле недопустима и может выдать пользовательскую ошибку:

LineTransformationException

Что если на корзине s3 файл изображения помещен по ошибке и снова может получить исключение преобразования

s3 может быть недоступен и может получить

Причина: com.amazonaws.SdkClientException: Невозможно выполнить запрос HTTP: Соединение с localhost: 4572 [localhost / 127.0.0.1] не удалось: соединение отклонено

И список многих известных и неизвестныхошибки могут продолжаться ...

  1. Так как же best способ справиться со всеми этими ошибками?Через обычай ErrorHandler или exception-type-router

  2. Если делать это через ErrorHandler, то как обслужить столько исключений.

  3. Иесть ли обработчик исключений для всех?

    открытый класс ErrorHandler {

    public void handleFailure (Message errorMmessage) {

    MessagingException payload = (MessagingException) errorMmessage.getPayload();
    
    LOG.info(">>--- Exception --- " + payload.getCause());
    

    }}

или

 <int:exception-type-router input-channel="errorChannel"
                           default-output-channel="nullChannel">

    <int:mapping exception-type="com.api.exception.TransformationException"
                 channel="transformErrorChannel"/>

    <int:mapping exception-type="com.amazonaws.SdkClientException"
                 channel="clientErrorChannel"/>

</int:exception-type-router>

<int:channel id="transformErrorChannel"/>

<int:service-activator ref="errorHandler"
                       method="handleFailure"
                       input-channel="transformErrorChannel"
                       output-channel="nullChannel"/>

<int:service-activator ref="clientErrorHandler"
                       method="handleFailure"
                       input-channel="clientErrorChannel"
                       output-channel="nullChannel"/>

1 Ответ

0 голосов
/ 08 июня 2018

s3-inbound-streaming-channel-adapter вместе с <poller> можно настроить с помощью error-channel.По умолчанию ошибка опроса (и, следовательно, все нисходящие потоки) направляется на глобальный errorChannel: https://docs.spring.io/spring-integration/docs/5.0.5.RELEASE/reference/html/configuration.html#namespace-errorhandler

...