入站通道介面卡:控制遠端檔案獲取
配置入站通道介面卡時,應考慮兩個屬性。max-messages-per-poll
,與其他輪詢器一樣,可用於限制每次輪詢發出的訊息數量(如果準備好的訊息多於配置值)。max-fetch-size
(自版本 5.0 起)可以限制一次從遠端伺服器檢索的檔案數量。
以下場景假定起始狀態是本地目錄為空
-
max-messages-per-poll=2
且max-fetch-size=1
:介面卡會獲取一個檔案,發出該檔案,然後獲取下一個檔案,發出該檔案,接著休眠直到下一次輪詢。 -
max-messages-per-poll=2
且max-fetch-size=2
:介面卡會獲取兩個檔案,然後逐個發出。 -
max-messages-per-poll=2
且max-fetch-size=4
:介面卡會獲取最多四個檔案(如果可用),併發出前兩個(如果至少有兩個)。接下來的兩個檔案將在下一次輪詢時發出。 -
max-messages-per-poll=2
且max-fetch-size
未指定:介面卡會獲取所有遠端檔案,併發出前兩個(如果至少有兩個)。隨後的檔案將在後續的輪詢中發出(每次兩個)。當所有檔案都被消費後,會再次嘗試遠端獲取,以獲取任何新檔案。
當您部署應用程式的多個例項時,我們建議設定一個較小的 max-fetch-size ,以避免一個例項“獨佔”所有檔案,導致其他例項“飢餓”。 |
max-fetch-size
的另一個用途是,如果您想停止獲取遠端檔案,但繼續處理已獲取的檔案。在 MessageSource
上設定 maxFetchSize
屬性(透過程式設計、JMX 或使用控制匯流排)可以有效地阻止介面卡獲取更多檔案,但允許輪詢器繼續為之前已獲取的檔案發出訊息。如果在屬性更改時輪詢器處於活動狀態,則更改將在下一次輪詢時生效。
從版本 5.1 開始,可以為同步器提供一個 Comparator<FTPFile>
。這在限制使用 maxFetchSize
獲取的檔案數量時非常有用。
另請參閱通用FTP 入站通道介面卡章節,瞭解有關 FileListFilter
配置的資訊。