默认情况下,入站和流入站远程文件通道适配器(、 和其他技术)配置了相应的实施,并配置了内存中的 。
要在集群中运行,可以使用共享的过滤器替换这些过滤器(有关更多信息,请参阅元数据存储)。
这些过滤器用于防止多次获取同一文件(除非修改时间更改)。
从版本 5.2 开始,在获取文件之前立即将文件添加到过滤器中(如果获取失败,则撤消)。FTP
SFTP
AbstractPersistentFileListFilter
MetadataStore
MetadataStore
如果发生灾难性故障(例如断电),当前正在获取的文件可能会保留在过滤器中,并且在重新启动应用程序时不会重新获取。
在这种情况下,您需要从 .MetadataStore |
如果发生灾难性故障(例如断电),当前正在获取的文件可能会保留在过滤器中,并且在重新启动应用程序时不会重新获取。
在这种情况下,您需要从 .MetadataStore |
在以前的版本中,在提取任何文件之前都会过滤文件,这意味着在发生灾难性故障后,多个文件可能处于此状态。
为了促进这种新行为,向 .FileListFilter
boolean accept(F file);
boolean supportsSingleFileFiltering();
如果过滤器返回 in ,则它必须实现 。true
supportsSingleFileFiltering
accept()
如果远程过滤器不支持单个文件过滤(例如 ),则适配器将恢复到以前的行为。AbstractMarkerFilePresentFileListFilter
如果使用多个过滤器(使用 或 ),则所有委托过滤器都必须支持单个文件过滤,以便复合过滤器支持它。CompositeFileListFilter
ChainFileListFilter
持久性文件列表过滤器现在具有 boolean 属性 。
将此属性设置为 , 还会设置 ,这意味着出站网关( 和 )上的递归操作现在每次都将始终遍历整个目录树。
这是为了解决未检测到目录树深处更改的问题。
此外,还会导致将文件的完整路径用作元数据存储键;这解决了以下问题:如果具有相同名称的文件在不同目录中多次出现,则过滤器无法正常工作。
重要说明:这意味着对于顶级目录下的文件,将无法找到持久性元数据存储中的现有键。
因此,默认情况下,该属性为;这可能会在未来版本中更改。forRecursion
true
alwaysAcceptDirectories
ls
mget
forRecursion=true
false