Inbound Channel Adapters: Controlling Remote File Fetching
當您設定入站通道配接器時,有兩個屬性應該考慮。 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
設定的資訊。