对于最新的稳定版本,请使用 Spring Integration 6.3.4spring-doc.cn

对于最新的稳定版本,请使用 Spring Integration 6.3.4spring-doc.cn

默认情况下,入站和流入站远程文件通道适配器(、 和其他技术)配置了相应的实施,并配置了内存中的 。 要在集群中运行,可以使用共享的过滤器替换这些过滤器(有关更多信息,请参阅元数据存储)。 这些过滤器用于防止多次获取同一文件(除非修改时间更改)。 从版本 5.2 开始,在获取文件之前立即将文件添加到过滤器中(如果获取失败,则撤消)。FTPSFTPAbstractPersistentFileListFilterMetadataStoreMetadataStorespring-doc.cn

如果发生灾难性故障(例如断电),当前正在获取的文件可能会保留在过滤器中,并且在重新启动应用程序时不会重新获取。 在这种情况下,您需要从 .MetadataStore
如果发生灾难性故障(例如断电),当前正在获取的文件可能会保留在过滤器中,并且在重新启动应用程序时不会重新获取。 在这种情况下,您需要从 .MetadataStore

在以前的版本中,在提取任何文件之前都会过滤文件,这意味着在发生灾难性故障后,多个文件可能处于此状态。spring-doc.cn

为了促进这种新行为,向 .FileListFilterspring-doc.cn

boolean accept(F file);

boolean supportsSingleFileFiltering();

如果过滤器返回 in ,则它必须实现 。truesupportsSingleFileFilteringaccept()spring-doc.cn

如果远程过滤器不支持单个文件过滤(例如 ),则适配器将恢复到以前的行为。AbstractMarkerFilePresentFileListFilterspring-doc.cn

如果使用多个过滤器(使用 或 ),则所有委托过滤器都必须支持单个文件过滤,以便复合过滤器支持它。CompositeFileListFilterChainFileListFilterspring-doc.cn

持久性文件列表过滤器现在具有 boolean 属性 。 将此属性设置为 , 还会设置 ,这意味着出站网关( 和 )上的递归操作现在每次都将始终遍历整个目录树。 这是为了解决未检测到目录树深处更改的问题。 此外,还会导致将文件的完整路径用作元数据存储键;这解决了以下问题:如果具有相同名称的文件在不同目录中多次出现,则过滤器无法正常工作。 重要说明:这意味着对于顶级目录下的文件,将无法找到持久性元数据存储中的现有键。 因此,默认情况下,该属性为;这可能会在未来版本中更改。forRecursiontruealwaysAcceptDirectorieslsmgetforRecursion=truefalsespring-doc.cn