Обработка ошибок пружинной интеграции различных типов
Я использую пружинную интеграцию XML и хочу знать, как лучше всего справляться с обработкой ошибок.
Я подключаюсь к s3 используя s3-inbound-streaming-channel-adapter
и затем преобразование файла CSV из корзины S3.
Возможные ошибки:
- Исключение преобразования может произойти, если строка в файле недопустима и может выдать пользовательскую ошибку:
LineTransformationException
Что, если в s3 bucket файл изображения помещен по ошибке и снова может получить Transformation Exception
S3 может быть вниз и может получить
Вызвано: com.amazonaws.SdkClientException: Невозможно выполнить HTTP-запрос: Соединение с localhost:4572 [localhost/127.0.0.1] не удалось: соединение отклонено
И список многих известных и неизвестных ошибок можно продолжить...
Так как же лучше всего справиться со всеми этими ошибками? Через обычай
ErrorHandler
или жеexception-type-router
Если делать это через
ErrorHandler
тогда как обслуживать так много исключений.И есть ли универсальный обработчик исключений?
открытый класс 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