遠端檔案資訊
從版本 5.2 開始,SftpStreamingMessageSource(SFTP 流入通道介面卡)、SftpInboundFileSynchronizingMessageSource(SFTP 入站檔案同步訊息源)以及 SftpOutboundGateway(SFTP 出站閘道器)的“讀”命令在生成訊息時提供了額外的訊息頭,其中包含有關遠端檔案的資訊。
-
FileHeaders.REMOTE_HOST_PORT- 檔案傳輸操作期間遠端會話連線到的主機:埠對; -
FileHeaders.REMOTE_DIRECTORY- 執行操作的遠端目錄; -
FileHeaders.REMOTE_FILE- 遠端檔名;僅適用於單個檔案操作。
由於 SftpInboundFileSynchronizingMessageSource 不是直接根據遠端檔案生成訊息,而是使用本地副本,因此 AbstractInboundFileSynchronizer 會在同步操作期間以 URI 樣式(protocol://host:port/remoteDirectory#remoteFileName)將遠端檔案資訊儲存在 MetadataStore 中(該儲存可外部配置)。當輪詢本地檔案時,SftpInboundFileSynchronizingMessageSource 會檢索此元資料。當本地檔案被刪除時,建議也刪除其元資料條目。為此,AbstractInboundFileSynchronizer 提供了 removeRemoteFileMetadata() 回撥。此外,還提供了一個 setMetadataStorePrefix() 方法,用於在元資料鍵中使用字首。建議此字首與基於 MetadataStore 的 FileListFilter 實現中使用的字首不同,當這些元件共享同一個 MetadataStore 例項時,以避免條目被覆蓋,因為過濾器和 AbstractInboundFileSynchronizer 都使用相同的本地檔名作為元資料條目鍵。