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