跳到主要内容
版本:7.0.2

FTP/FTPS 适配器

DeepSeek V3 中英对照 FTP/FTPS Adapters

Spring Integration 为 FTP 和 FTPS 的文件传输操作提供了支持。

文件传输协议(FTP)是一种简单的网络协议,允许您在互联网上的两台计算机之间传输文件。FTPS 代表“基于 SSL 的 FTP”。

此依赖项为项目所需:

<dependency>
<groupId>org.springframework.integration</groupId>
<artifactId>spring-integration-ftp</artifactId>
<version>7.0.2</version>
</dependency>

在FTP通信中涉及两个参与者:客户端和服务器。使用FTP或FTPS传输文件时,您需要通过客户端发起与运行FTP服务器的远程计算机的连接。建立连接后,客户端可以选择发送或接收文件副本。

Spring Integration 支持通过 FTP 或 FTPS 发送和接收文件,为此提供了三种客户端端点:入站通道适配器、出站通道适配器和出站网关。同时,它还提供了便捷的基于命名空间的配置选项,用于定义这些客户端组件。

要使用 FTP 命名空间,请将以下内容添加到 XML 文件的头部:

xmlns:int-ftp="http://www.springframework.org/schema/integration/ftp"
xsi:schemaLocation="http://www.springframework.org/schema/integration/ftp
https://www.springframework.org/schema/integration/ftp/spring-integration-ftp.xsd"

章节总结

📄️ 高级配置

DefaultFtpSessionFactory 提供了对底层客户端 API 的抽象(自 Spring Integration 2.0 起,该 API 为 Apache Commons Net)。这使您无需关注 org.apache.commons.net.ftp.FTPClient 的低级配置细节。会话工厂公开了若干常见属性(自版本 4.0 起,现已包含 connectTimeout、defaultTimeout 和 dataTimeout)。但有时您需要访问更低级别的 FTPClient 配置以实现更高级的配置(例如设置主动模式的端口范围)。为此,AbstractFtpSessionFactory(所有 FTP 会话工厂的基类)以两个后处理方法的形式提供了钩子,如下列清单所示:

📄️ FTP 流式入站通道适配器

版本 4.3 引入了流式入站通道适配器。该适配器生成有效负载类型为 InputStream 的消息,允许在不写入本地文件系统的情况下获取文件。由于会话保持打开状态,消费应用程序需在文件消费完毕后负责关闭会话。会话通过 closeableResource 头部(IntegrationMessageHeaderAccessor.CLOSEABLE\_RESOURCE)提供。标准框架组件(如 FileSplitter 和 StreamTransformer)会自动关闭会话。有关这些组件的更多信息,请参阅文件拆分器和流转换器。以下示例展示了如何配置 inbound-streaming-channel-adapter:

📄️ FTP 会话缓存

在 3.0 之前的版本中,会话默认会自动缓存。虽然可以通过 cache-sessions 属性来禁用自动缓存,但该方案并未提供配置其他会话缓存属性的方法。例如,无法限制创建的会话数量。为了支持这一需求及其他配置选项,我们添加了 CachingSessionFactory。它提供了 sessionCacheSize 和 sessionWaitTimeout 属性。sessionCacheSize 属性控制工厂在其缓存中维护的活动会话数量(默认无限制)。如果已达到 sessionCacheSize 阈值,任何获取另一个会话的尝试都将被阻塞,直到缓存中的某个会话变为可用,或者会话等待时间超时(默认等待时间为 Integer.MAX\_VALUE)。sessionWaitTimeout 属性用于配置该值。