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