目前我有一个基本的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.
在这种情况下,我们希望"重新填充",一个可配置的次数。
我读过关于int:request-handler-advice-chain
的文章,但看起来你不能在FTP适配器的轮询器上使用它。
我使用SI 2.2.6,但如果需要,可以升级
您可以使用自定义Trigger
bean而不是cron触发器。
向轮询器添加error-channel
以捕获异常,并在错误通道流上,在触发器bean中设置发生错误的某些状态。
如果没有出现错误,请在明天调用nextExecutionTime()
时返回要运行的时间。
如果发生错误,请返回要重试的时间(并重置错误状态)。