我正在使用Spring集成XML,并想知道处理错误处理的最佳方法是什么。
我使用s3-inbound-streaming-channel-adapter
连接到s3,然后从s3存储桶转换csv文件。
可能发生的错误包括:
LineTransformationException
如果在s3存储桶上错误地放置了一个图像文件并且再次出现转换异常怎么办
s3可能已关闭,可以
引起:com.amazonaws.SdkClientException:无法执行HTTP请求:连接到localhost:4572 [localhost / 127.0.0.1]失败:连接被拒绝
许多已知和未知错误的列表可以继续......
那么处理所有这些错误的最佳方式是什么?通过自定义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"/>
答案 0 :(得分: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