Ошибка интеграции Spring, обрабатывающая разные типы

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

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

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

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

LineTransformationException

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

  2. s3 может выйти из строя и получить

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

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

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

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

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

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

    public void handleFailure (сообщение 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"/>
0
0
1 092
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

Спасибо. Я использовал собственный обработчик ошибок с двумя методами, один для обработки исключения преобразования, например. messageHandlingFailure (сообщение Message <MessageTransformationExceptio‌ n>), а другой - для обработки любых других ошибок типа, например. handleFailure (сообщение <MessagingException>). Как вы думаете, это правильно?

user2279337 08.06.2018 18:01

Также как отключить LoggingHandler? поскольку он постоянно выводит след этапа.

user2279337 08.06.2018 18:03

Вы можете объявить, что владеете компонентом errorChannel. Таким образом, LoggingHandler будет отключен.

Artem Bilan 08.06.2018 18:04

Другие вопросы по теме