遠端檔案資訊

從 5.2 版開始,SftpStreamingMessageSource (SFTP 串流輸入通道配接器)、SftpInboundFileSynchronizingMessageSource (SFTP 輸入通道配接器) 和 SftpOutboundGateway 的 "read" 命令 (SFTP 輸出閘道) 在訊息中提供額外的標頭,以產生關於遠端檔案的資訊

  • FileHeaders.REMOTE_HOST_PORT - 遠端工作階段在檔案傳輸操作期間連線的主機:埠配對;

  • FileHeaders.REMOTE_DIRECTORY - 執行操作的遠端目錄;

  • FileHeaders.REMOTE_FILE - 遠端檔案名稱;僅適用於單一檔案操作。

由於 SftpInboundFileSynchronizingMessageSource 不會針對遠端檔案產生訊息,而是使用本機複本,因此 AbstractInboundFileSynchronizer 會將關於遠端檔案的資訊儲存在 MetadataStore 中(可以從外部設定),在同步操作期間以 URI 樣式 (protocol://host:port/remoteDirectory#remoteFileName) 儲存。當輪詢本機檔案時,SftpInboundFileSynchronizingMessageSource 會擷取此中繼資料。當本機檔案被刪除時,建議移除其中繼資料條目。AbstractInboundFileSynchronizer 提供 removeRemoteFileMetadata() 回呼以達到此目的。此外,還有一個 setMetadataStorePrefix() 可用於中繼資料金鑰中。建議此前置詞與基於 MetadataStoreFileListFilter 實作中使用的前置詞不同,當相同的 MetadataStore 實例在這些元件之間共用時,以避免條目覆寫,因為篩選器和 AbstractInboundFileSynchronizer 都使用相同的本機檔案名稱作為中繼資料條目金鑰。