我有以下配置
<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>
我想为此添加错误处理。我该怎么办呢?这是一个直接通道,因此在同一个线程中运行。如果我从我的代码中抛出异常,例如在自定义文件过滤器中,我可以在哪里捕获它并返回统一响应。我还能做些什么来捕获运行时异常?
由于
答案 0 :(得分:1)
向入站适配器的error-channel
添加<poller/>
,并在发生异常时向该频道发送ErrorMessage
。
如果在创建消息之前发生异常(例如在过滤器中),则有效负载将是原始异常。如果在创建和处理消息之后发生异常(例如,在您的情况下出站适配器中出现错误),则有效负载为MessagingException
,具有failedMessage
和cause
属性。