遠端檔案資訊

從版本 5.2 開始,FtpStreamingMessageSourceFTP 流式入站通道介面卡)、FtpInboundFileSynchronizingMessageSourceFTP 入站通道介面卡)以及 FtpOutboundGatewayFTP 出站閘道器)的 "read" 命令,在生成的 message 中提供了額外的 header,包含有關遠端檔案的資訊。

  • FileHeaders.REMOTE_HOST_PORT - 檔案傳輸操作期間遠端會話連線到的 host:port 對;

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

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

由於 FtpInboundFileSynchronizingMessageSource 不是基於遠端檔案生成 message,而是使用本地副本,因此 AbstractInboundFileSynchronizer 在同步操作期間將遠端檔案的資訊儲存在 MetadataStore(可外部配置)中,以 URI 格式儲存(protocol://host:port/remoteDirectory#remoteFileName)。當本地檔案被輪詢時,FtpInboundFileSynchronizingMessageSource 會檢索此元資料。當本地檔案被刪除時,建議移除其元資料條目。AbstractInboundFileSynchronizer 為此目的提供了 removeRemoteFileMetadata() 回撥。此外,還有一個 setMetadataStorePrefix() 用於元資料鍵。建議在這些元件共享同一個 MetadataStore 例項時,將此字首與基於 MetadataStoreFileListFilter 實現中使用的字首區分開,以避免條目被覆蓋,因為過濾器和 AbstractInboundFileSynchronizer 都使用相同的本地檔名作為元資料條目鍵。