对于最新的稳定版本,请使用 Spring Integration 6.3.1Spring中文文档

对于最新的稳定版本,请使用 Spring Integration 6.3.1Spring中文文档

入站和流式传输的远程文件通道适配器(、 和其他技术)配置了相应的实现,默认情况下,配置了 in-memory 。 若要在群集中运行,可以使用共享将其替换为筛选器(有关详细信息,请参阅元数据存储)。 这些筛选器用于防止多次提取同一文件(除非修改后的时间更改)。 从版本 5.2 开始,在提取文件之前,会立即将文件添加到过滤器中(如果提取失败,则反转)。FTPSFTPAbstractPersistentFileListFilterMetadataStoreMetadataStoreSpring中文文档

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

在以前的版本中,在获取任何文件之前都会过滤文件,这意味着在灾难性故障后,多个文件可能处于此状态。Spring中文文档

为了促进这种新行为,在 中添加了两个新方法。FileListFilterSpring中文文档

boolean accept(F file);

boolean supportsSingleFileFiltering();

如果筛选器返回 ,则必须实现 。truesupportsSingleFileFilteringaccept()Spring中文文档

如果远程筛选器不支持单个文件筛选(如 ),适配器将恢复到以前的行为。AbstractMarkerFilePresentFileListFilterSpring中文文档

如果使用了多个筛选器(使用 或),则所有委托筛选器都必须支持单个文件筛选,复合筛选器才能支持它。CompositeFileListFilterChainFileListFilterSpring中文文档

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