spring集成错误处理不同类型

时间:2018-06-08 14:44:57

标签: spring spring-integration spring-integration-aws

我正在使用Spring集成XML,并想知道处理错误处理的最佳方法是什么。

我使用s3-inbound-streaming-channel-adapter连接到s3,然后从s3存储桶转换csv文件。

可能发生的错误包括:

  1. 如果文件中的某行无效,可能会发生转换异常,因此可能会抛出自定义错误:
  2. LineTransformationException

    1. 如果在s3存储桶上错误地放置了一个图像文件并且再次出现转换异常怎么办

    2. s3可能已关闭,可以

    3. 引起:com.amazonaws.SdkClientException:无法执行HTTP请求:连接到localhost:4572 [localhost / 127.0.0.1]失败:连接被拒绝

      许多已知和未知错误的列表可以继续......

      1. 那么处理所有这些错误的最佳方式是什么?通过自定义ErrorHandlerexception-type-router

      2. 如果通过ErrorHandler进行,那么如何迎合这么多例外情况。

      3. 是否有一个包罗万象的异常处理程序?

        公共类ErrorHandler {

        public void handleFailure(Message errorMmessage){

        MessagingException payload = (MessagingException) errorMmessage.getPayload();
        
        LOG.info(">>--- Exception --- " + payload.getCause());
        

        }}

      4.  <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 个答案:

答案 0 :(得分:1)

可以使用s3-inbound-streaming-channel-adapter配置<poller>及其error-channel。默认情况下,轮询错误(以及所有下游)都路由到全局errorChannelhttps://docs.spring.io/spring-integration/docs/5.0.5.RELEASE/reference/html/configuration.html#namespace-errorhandler