远程文件信息
从版本 5.2 开始,FtpStreamingMessageSource(FTP 流式入站通道适配器)、FtpInboundFileSynchronizingMessageSource(FTP 入站通道适配器)和 FtpOutboundGateway 的“read”命令(FTP 出站网关)在生成的消息中提供了关于远程文件的附加头信息
-
FileHeaders.REMOTE_HOST_PORT- 文件传输操作期间远程会话连接到的主机:端口对; -
FileHeaders.REMOTE_DIRECTORY- 执行操作的远程目录; -
FileHeaders.REMOTE_FILE- 远程文件名;仅适用于单个文件操作。
由于 FtpInboundFileSynchronizingMessageSource 不会针对远程文件生成消息,而是使用本地副本,因此 AbstractInboundFileSynchronizer 在同步操作期间将远程文件信息以 URI 样式(protocol://host:port/remoteDirectory#remoteFileName)存储在 MetadataStore(可外部配置)中。当轮询本地文件时,FtpInboundFileSynchronizingMessageSource 会检索此元数据。当本地文件被删除时,建议删除其元数据条目。为此,AbstractInboundFileSynchronizer 提供了 removeRemoteFileMetadata() 回调。此外,还有一个 setMetadataStorePrefix() 用于元数据键。建议此前缀与基于 MetadataStore 的 FileListFilter 实现中使用的前缀不同,当这些组件之间共享相同的 MetadataStore 实例时,以避免条目覆盖,因为过滤器和 AbstractInboundFileSynchronizer 都使用相同的本地文件名作为元数据条目键。