重试Spring集成FTP入站通道适配器

时间:2014-10-12 11:51:25

标签: java spring spring-integration

目前我有一个基本的FTP入站通道适配器,配置了轮询器

<int-ftp:inbound-channel-adapter id="ftpInboundChannelAdapter">
        <int:poller cron="#{fooProperties['foo.ftp.cron']}" max-messages-per-poll="-1" />
</int-ftp:inbound-channel-adapter>

cron在特定时间每天一次。

但是,有时,我们连接的FTP服务器会抛出错误,例如

org.apache.commons.net.ftp.FTPConnectionClosedException: FTP response 421 received.  Server closed connection.

在这种情况下,我们希望&#34; repoll&#34;,可配置的次数。

我读到了int:request-handler-advice-chain,但看起来你不能在FTP适配器的轮询器上使用它。

我使用的是SI 2.2.6,但如果需要可以升级

1 个答案:

答案 0 :(得分:0)

您可以使用自定义Trigger bean而不是cron触发器。

向轮询器添加error-channel以捕获异常,并在错误通道流上,在触发器bean中设置发生错误的状态。

如果没有发生错误,请在调用nextExecutionTime()时返回您明天要运行的时间。

如果发生错误,请返回您要重试的时间(并重置错误状态)。