Обработка ошибок пружинной интеграции различных типов

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

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

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

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

LineTransformationException

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

  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 (Сообщение об ошибке Mmessage) {

    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 ответ

Решение

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

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