SFTP集成-SftpInboundFileSynchronizer-如何不再次下载同一文件

拉加夫:

在我当前的应用程序中,使用spring-batch作业,我触发了将SFTP远程文件发送到本地目录的过程,对其进行处理并在后期处理后删除文件。


    @Bean("ftpMessageSource")
    @EndpointId("streamInboundAdapter")
    @InboundChannelAdapter(channel = "sftpChannel", poller = @Poller(fixedDelay = "5000"), autoStartup = "false")
    public MessageSource<File> sftpMessageSource() {
        SftpInboundFileSynchronizingMessageSource source =
                new SftpInboundFileSynchronizingMessageSource(sftpInboundFileSynchronizer());
        source.setLocalDirectory(new File("sftp-inbound"));
        source.setAutoCreateLocalDirectory(true);
        source.setLocalFilter(new FileSystemPersistentAcceptOnceFileListFilter(metadataStore(),""));
        source.setMaxFetchSize(10);
        return source;
    }


    @Bean(name="fileStore")
    public PropertiesPersistingMetadataStore metadataStore() {
        PropertiesPersistingMetadataStore metadataStore = new PropertiesPersistingMetadataStore();
        metadataStore.setBaseDirectory("filestore");
        metadataStore.setFileName("filestore.properties");
        metadataStore.afterPropertiesSet();
        return metadataStore;
    }

在处理每个文件时,我在fileStore.properties文件中输入文件名。

    
metadataStore.put(file.getName(),file.getName());


我遇到的下一个问题是下次处理(不重新启动服务器并再次启动相同的进程)是-进程再次获取同一组文件进行处理。

我不想使用SFTP处理的文件,能否请您指出我缺少的配置,以避免再次下载相同的文件。

Artem Bilan:

并删除文件后处理。

因此,文件不再存在于本地目录中。由于您不过滤远程文件,因此它们将作为新的本地副本再次下载。

FileSystemPersistentAcceptOnceFileListFilter逻辑基于file.lastModified(),如果与现有条目不同,则将其替换并因此推入下游。

考虑到使用SftpPersistentAcceptOnceFileListFiltersftpInboundFileSynchronizer这样,lastModified就不会从SFTP提取相同的文件(如果相同)。

在docs中查看更多信息:https//docs.spring.io/spring-integration/docs/5.3.2.RELEASE/reference/html/sftp.html#sftp-inbound

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Spring SFTP集成未轮询文件

SftpInboundFileSynchronizer不同步

Spring Integration Sftp流入站通道适配器多次处理同一文件

同时下载同一文件多次

如何配置Spring集成适配器以通过SFTP获取和放置文件

Spring集成:处理后将文件移动到远程SFTP位置

Spring SFTP集成-无法使用known_hosts文件连接到主机

春季集成-复制后SFTP重命名或在远程服务器中移动文件

如何从多个URL下载同一文件以提高速度?

如何两次下载同一文件?(urlretrieve问题)

与SFTP的Spring集成

Spring集成sftp问题

野牛:yywrap()再次解析同一文件一次?

带有集成器的spring集成sftp

如何使wget不多次下载同一文件(带有和不带有扩展名)

从ftp下载文件并保存在同一文件夹中

在再次实例化另一个文件后,StreamWriter继续写入同一文件

同一fd在不同进程中如何指向同一文件?

从文件读取后写回同一文件

同一文件的多个文件句柄

在同一文件系统中移动文件

如何通过同一文件夹中的.vbs文件运行.ps1文件?

如何逐行读取文件,消除重复,然后写回同一文件?

如何使用针对同一文件运行的命令来更新文件?

在C文件阅读中:如何在同一文件上多次执行fgets?

如何在同一文件夹中导入多个Dart文件

如何在同一文件夹中重新加载().py文件?

如何在Gnuplot中循环遍历同一文件以生成png文件?

如何使用curl / wget从不同来源下载同一文件的一部分?