我的应用程序是一个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
。不过,那个文件还没有被拿起来。为什么会这样?解决方案是什么?
答案 0 :(得分:1)
我得到了解决方案。我已将prevent-duplicates = false设置为过滤器bean(FileListFilterFactoryBean),而不是inbound-channel-adapter&amp;它奏效了。
答案 1 :(得分:0)
默认AcceptOnceFileListFilter
不会查看lastModified文件属性,只会查看文件名。
FileSystemPersistentAcceptOnceFileListFilter
比较时间戳,以便传递具有相同名称的修改过的文件。
AcceptOnceFileListFilter
将其状态存储在内存中。如果您希望状态在系统重启后继续存在,请考虑使用FileSystemPersistentAcceptOnceFileListFilter
。此过滤器将接受的文件名存储在MetadataStore实现中(第9.5节“元数据存储”)。此过滤器匹配文件名和修改时间。