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
,以避免一个实例 “grabbing” 所有文件并使其他实例匮乏。
如果您想停止获取远程文件但继续处理已获取的文件,则 @{69} 的另一种用途是。对 @{71}(通过编程、使用 JMX 或 @{72})设置 @{70} 属性会有效阻止适配器获取更多文件,但允许轮询器继续为先前已获取的文件发出消息。如果属性更改时轮询器处于活动状态,则更改将在下次轮询中生效。
从版本 5.1 开始,可以使用 Comparator<FTPFile>
为同步器提供。在使用 maxFetchSize
限制所获取文件数时,这非常有用。