入站通道介面卡:控制遠端檔案獲取

配置入站通道介面卡時,應考慮兩個屬性。max-messages-per-poll,與其他輪詢器一樣,可用於限制每次輪詢發出的訊息數量(如果準備好的訊息多於配置值)。max-fetch-size(自版本 5.0 起)可以限制一次從遠端伺服器檢索的檔案數量。

以下場景假定起始狀態是本地目錄為空

  • max-messages-per-poll=2max-fetch-size=1:介面卡會獲取一個檔案,發出該檔案,然後獲取下一個檔案,發出該檔案,接著休眠直到下一次輪詢。

  • max-messages-per-poll=2max-fetch-size=2:介面卡會獲取兩個檔案,然後逐個發出。

  • max-messages-per-poll=2max-fetch-size=4:介面卡會獲取最多四個檔案(如果可用),併發出前兩個(如果至少有兩個)。接下來的兩個檔案將在下一次輪詢時發出。

  • max-messages-per-poll=2max-fetch-size 未指定:介面卡會獲取所有遠端檔案,併發出前兩個(如果至少有兩個)。隨後的檔案將在後續的輪詢中發出(每次兩個)。當所有檔案都被消費後,會再次嘗試遠端獲取,以獲取任何新檔案。

當您部署應用程式的多個例項時,我們建議設定一個較小的 max-fetch-size,以避免一個例項“獨佔”所有檔案,導致其他例項“飢餓”。

max-fetch-size 的另一個用途是,如果您想停止獲取遠端檔案,但繼續處理已獲取的檔案。在 MessageSource 上設定 maxFetchSize 屬性(透過程式設計、JMX 或使用控制匯流排)可以有效地阻止介面卡獲取更多檔案,但允許輪詢器繼續為之前已獲取的檔案發出訊息。如果在屬性更改時輪詢器處於活動狀態,則更改將在下一次輪詢時生效。

從版本 5.1 開始,可以為同步器提供一個 Comparator<FTPFile>。這在限制使用 maxFetchSize 獲取的檔案數量時非常有用。

另請參閱通用FTP 入站通道介面卡章節,瞭解有關 FileListFilter 配置的資訊。