我有一个非常简单的自定义过滤器用于入站sftp通道适配器,我只是检查文件扩展名是否在接受列表中。如果是,则返回true,并允许处理该文件。
正在发生的事情是第一次处理文件它工作正常。如果在我的sftp服务器中删除了相同的文件,它将进入过滤器并且它返回true表示文件被接受仍然不会将该消息放在下游队列中。这是我的示例配置看起来像
<int-sftp:inbound-channel-adapter id="sftpAdapter"
channel="ftpChannel"
session-factory="sftpSessionFactory"
local-directory="c:\\temp"
remote-directory="//test//inbound"
remote-file-separator="/"
auto-create-local-directory="true"
delete-remote-files="true"
filter="customfilter"
preserve-timestamp="true"
>
<int:poller cron="0/5 * * * * *" max-messages-per-poll="1"/>
</int-sftp:inbound-channel-adapter>
&#13;
答案 0 :(得分:1)
那是因为FileListFilter
中还有一个AbstractInboundFileSynchronizingMessageSource
:
private volatile FileListFilter<File> localFileListFilter = new AcceptOnceFileListFilter<File>();
由于您保证duplicate
的{{1}}逻辑,您应配置filter="customfilter"
:
local-filter