傳入通道配接器:控制遠端檔案擷取
在設定傳入通道配接器時,您應考慮兩個屬性。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
:配接器最多擷取 4 個檔案(如果可用的話),並發出前兩個檔案(如果至少有兩個檔案)。接下來的兩個檔案將在下一次輪詢時發出。 -
max-messages-per-poll=2
且未指定max-fetch-size
:配接器擷取所有遠端檔案,並發出前兩個檔案(如果至少有兩個檔案)。後續檔案在後續輪詢中發出(一次兩個)。當所有檔案都消耗完畢後,將再次嘗試遠端擷取,以取得任何新檔案。
當您部署應用程式的多個實例時,我們建議設定較小的 max-fetch-size ,以避免一個實例「抓取」所有檔案,而使其他實例資源匱乏。 |
max-fetch-size
的另一個用途是當您想要停止擷取遠端檔案,但繼續處理已擷取的檔案時。在 MessageSource
上設定 maxFetchSize
屬性(以程式方式、透過 JMX 或透過控制匯流排)可有效地阻止配接器擷取更多檔案,但讓輪詢器繼續發出先前已擷取檔案的訊息。如果輪詢器在屬性變更時處於活動狀態,則變更會在下一次輪詢時生效。
從版本 5.1 開始,同步器可以提供 Comparator<?>
。當使用 maxFetchSize
限制擷取的檔案數量時,這非常有用。
另請參閱一般的 SFTP 傳入通道配接器章節,以取得有關 FileListFilter
設定的資訊。