file:inbound-channel-adapter prevent-duplicates =“false”在spring启动应用程序中不起作用

时间:2017-01-18 07:24:01

标签: java spring spring-integration

我的应用程序是一个Spring Boot应用程序。我有一个名为abc的目录。我创建了一个入站适配器来读取新文件的目录。假设目录中存在文件aa.txt。它正被适配器拾取。现在,让我们说,目录中再次保存了一个具有相同名称的新文件。但是,现在不会调用适配器。

<file:inbound-channel-adapter id="inAdapter"
    directory="file:abc" filter="txtFiles"
    auto-startup="true" prevent-duplicates="false">
    <int:poller id="poller" fixed-delay="5000" />
</file:inbound-channel-adapter>

我已设置prevent-duplicates=false。不过,那个文件还没有被拿起来。为什么会这样?解决方案是什么?

2 个答案:

答案 0 :(得分:1)

我得到了解决方案。我已将prevent-duplicates = false设置为过滤器bean(FileListFilterFactoryBean),而不是inbound-channel-adapter&amp;它奏效了。

答案 1 :(得分:0)

默认AcceptOnceFileListFilter不会查看lastModified文件属性,只会查看文件名。

FileSystemPersistentAcceptOnceFileListFilter比较时间戳,以便传递具有相同名称的修改过的文件。

请参阅the documentation

  

AcceptOnceFileListFilter将其状态存储在内存中。如果您希望状态在系统重启后继续存在,请考虑使用FileSystemPersistentAcceptOnceFileListFilter。此过滤器将接受的文件名存储在MetadataStore实现中(第9.5节“元数据存储”)。此过滤器匹配文件名和修改时间。