远程文件信息

从版本 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() 方法,用于在元数据键中使用前缀。建议此前缀与基于 MetadataStoreFileListFilter 实现中使用的前缀不同,当这些组件共享同一个 MetadataStore 实例时,以避免条目被覆盖,因为过滤器和 AbstractInboundFileSynchronizer 都使用相同的本地文件名作为元数据条目键。

© . This site is unofficial and not affiliated with VMware.