远程文件信息

从 5.2 版本开始,SftpStreamingMessageSourceSFTP 流式输入通道适配器)、SftpInboundFileSynchronizingMessageSourceSFTP 输入通道适配器)和 SftpOutboundGatewaySFTP 输出网关)的“读取”命令会在生成的报文中提供附加的报头,其中包含有关远程文件的信息

  • FileHeaders.REMOTE_HOST_PORT - 远程会话在文件传输操作期间连接到的主机:端口对;

  • FileHeaders.REMOTE_DIRECTORY - 执行操作的远程目录;

  • FileHeaders.REMOTE_FILE - 远程文件名;仅适用于单个文件操作。

由于SftpInboundFileSynchronizingMessageSource不会针对远程文件生成消息,而是使用本地副本,因此AbstractInboundFileSynchronizer在同步操作期间以 URI 样式(protocol://host:port/remoteDirectory#remoteFileName)将有关远程文件的信息存储在MetadataStore(可以在外部配置)中。此元数据在轮询本地文件时由SftpInboundFileSynchronizingMessageSource检索。当本地文件被删除时,建议删除其元数据条目。AbstractInboundFileSynchronizer为此目的提供了一个removeRemoteFileMetadata()回调。此外,还有一个setMetadataStorePrefix()用于元数据键。建议此前缀与MetadataStore based FileListFilter 实现中使用的前缀不同,当这些组件之间共享相同的MetadataStore 实例时,以避免条目覆盖,因为过滤器和AbstractInboundFileSynchronizer都使用相同的本地文件名作为元数据条目键。