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