当前位置: 首页 > 知识库问答 >
问题:

Spring集成sftp入站通道适配器和临时文件问题

西门胜涝
2023-03-14

我们正在使用spring integration sftp入站通道适配器,它每隔几秒钟轮询一次,并将zip文件下载到本地目录进行进一步处理。当有一个大文件,客户端仍在上载该文件,而这个入站适配器拾取了那个不完整的文件时,问题就开始了。我们使用AcceptAllFileFilter进行远程筛选,对于本地筛选,我们有自定义筛选。

有没有更好的方法来忽略或检查文件是否完全上传,然后拿起进行处理?

共有1个答案

颜熙云
2023-03-14

这是ftp获取部分文件的典型问题。

有两种常见的解决方案。。。

  1. 使用其他名称写入文件,然后重命名

Spring Integration(在编写端)使用1(使用foo.zip.writing写入文件,并重命名为foo.zip)。这是最简单的机制,因为它很容易过滤。编写文件——Spring Integration会自动完成这项工作。

2) 因为需要编写一个自定义的FileListFilter来忽略foo,所以这就有点困难了。zipiffoo。完成不存在。

如果不使用这样的机制,底层的FTP协议无法阻止获取部分文件。

编辑:

如果您无法控制发件人,您可以编写一个自定义的过滤器FileListFilter),该过滤器只会在一段时间后文件没有更改的情况下获取文件。

这不是Spring集成问题,而是任何使用FTP的应用程序都必须解决的问题。Spring集成提供了一个解决方案,以及针对您的情况解决该问题所需的所有挂钩。

 类似资料:
  • 问题内容: 入站和出站通道适配器之间的根本区别是什么? 任何示例都将非常有帮助。 我已经查看过Spring文档,这种“方向性”的区别对我来说还不清楚。我支持配置了outbound-channel-adapter的应用程序,但是我发现使用 出站 标签可以直观地了解行为计数器。该适配器获取一个外部文件,然后 将其 引入应用程序中, 在 该应用程序中我们解析文件并保留数据。 这类似于这个问题,但是我想更

  • 我试图将从Quickfix读取消息(读取修复消息)配置到spring集成中。我知道我可以使用入站通道适配器从外部源(如QuickFix)读取数据。您能提供如何编写事件驱动入站通道适配器的示例吗?我有以下配置不起作用

  • 如果我创建一个SFTP入站通道适配器,并使用在SFTP中配置为channel属性的通道发送一些文件。文件将传输到SFTP远程目录本地目录,还是直接从通道流到本地目录

  • 如何通过注释而不是常规配置文件配置入站通道适配器?我可以为会话工厂定义bean,如下所示: 如何配置通过注释下给出的入站通道适配器? 我正在寻找的是在应用程序启动时连接所有bean,然后公开一些方法来开始轮询服务器,处理它们,然后从本地删除它们,类似于 其中getPollableChannel()为我提供了用于轮询的bean。

  • 我也有弹出绑定网关适配器,但它也是一样的。我会非常感谢您的帮助。非常感谢

  • 我正在使用spring integration sftp入站流通道适配器,它每隔几秒钟就轮询一次。入站适配器正在多次挑选相同的文件进行处理。下面是配置。 上面代码中的sample.customFilter是SftpRegexPatternFileListFilter的一个子类,其中我将accept方法修改如下,以便根据Spring SFTP vanging filename-regex中提供的解决