|
如需使用最新稳定版本,请使用 Spring Integration 7.0.4! |
入站通道适配器:控制远程文件获取
在配置入站通道适配器时,您应该考虑两个属性。
max-messages-per-poll,与所有轮询器一样,可用于限制每次轮询发出的消息数量(如果准备就绪的消息多于配置的值)。
max-fetch-size(自5.0版本起)可限制一次从远程服务器获取的文件数量。
以下场景假设起始状态是一个空的本地目录:
-
max-messages-per-poll=2和max-fetch-size=1:适配器获取一个文件,发出它,获取下一个文件,发出它,然后进入休眠状态直到下一次轮询。 -
max-messages-per-poll=2andmax-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 时,这非常有用。
另请参阅关于FileListFilter配置的通用FTP 入站通道适配器章节。