Inbound Channel Adapters: Controlling Remote File Fetching

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