如何处理 spring 集成的同步通道中的异常

How to handle exceptions in synchronous channels for spring integration

我有以下配置

       <int:channel id="ftpChannel"/> 
<int-ftp:inbound-channel-adapter id="ftpInbound"
    channel="ftpChannel"
    session-factory="ftpClientFactory"
    charset="UTF-8"
    local-directory="file:${paths.root}"
    delete-remote-files="true"
    temporary-file-suffix=".writing"
    remote-directory="${file.ftpfolder}"

    filter="compositeFilterRemote"
     preserve-timestamp="true"
     auto-startup="true">
    <int:poller fixed-rate="1000"/>
</int-ftp:inbound-channel-adapter>
<int-ftp:outbound-channel-adapter id="ftpOutbound"
    channel="ftpChannel"
    session-factory="ftpClientFactory"
    charset="UTF-8"
    remote-file-separator="/"
    auto-create-directory="true"
    remote-directory="${file.ftpfolder}" 
    use-temporary-file-name="true"
     temporary-file-suffix=".writing">
    <int-ftp:request-handler-advice-chain>
         <bean class="org.springframework.integration.handler.advice.ExpressionEvaluatingRequestHandlerAdvice">
            <property name="onSuccessExpression" value="payload.delete()" />
          </bean>
    </int-ftp:request-handler-advice-chain>
  </int-ftp:outbound-channel-adapter>

我想为此添加错误处理。我该怎么办?这是一个直接通道,因此在同一个线程中运行。如果我从我的代码中抛出异常,例如在自定义文件过滤器中,我可以在哪里捕获它并 return 统一响应。还有我能做些什么来捕获运行时异常??

谢谢

向入站适配器的 <poller/> 添加一个 error-channel,当抛出异常时,将向该通道发送一个 ErrorMessage

如果异常发生在消息创建之前(例如在您的过滤器中),负载将是原始异常。如果异常发生在消息创建和处理之后(例如您的出站适配器中的错误),则有效负载是具有 failedMessagecause 属性的 MessagingException