如何处理 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
。
如果异常发生在消息创建之前(例如在您的过滤器中),负载将是原始异常。如果异常发生在消息创建和处理之后(例如您的出站适配器中的错误),则有效负载是具有 failedMessage
和 cause
属性的 MessagingException
。
我有以下配置
<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
。
如果异常发生在消息创建之前(例如在您的过滤器中),负载将是原始异常。如果异常发生在消息创建和处理之后(例如您的出站适配器中的错误),则有效负载是具有 failedMessage
和 cause
属性的 MessagingException
。