对于最新的稳定版本,请使用 Spring Integration 6.4.3spring-doc.cadn.net.cn

入站通道适配器:控制远程文件获取

在配置入站通道适配器时,应考虑两个属性。max-messages-per-poll与所有 Poller 一样,可用于限制每次轮询时发出的消息数(如果已准备好超过配置的值)。max-fetch-size(自版本 5.0 起)可以限制一次从远程服务器检索的文件数。spring-doc.cadn.net.cn

以下场景假定起始状态为空的本地目录:spring-doc.cadn.net.cn

  • max-messages-per-poll=2max-fetch-size=1:适配器获取一个文件,发出它,获取下一个文件,发出它,然后休眠直到下一次轮询。spring-doc.cadn.net.cn

  • max-messages-per-poll=2max-fetch-size=2):适配器获取这两个文件,然后发出每个文件。spring-doc.cadn.net.cn

  • max-messages-per-poll=2max-fetch-size=4:适配器最多获取四个文件(如果可用)并发出前两个文件(如果至少有两个)。 接下来的两个文件将在下一次轮询时发出。spring-doc.cadn.net.cn

  • max-messages-per-poll=2max-fetch-size未指定:适配器获取所有远程文件并发出前两个文件(如果至少有两个)。 后续文件将在后续轮询时发出(一次两个)。 当所有文件都被消耗时,将再次尝试远程获取以获取任何新文件。spring-doc.cadn.net.cn

当您部署应用程序的多个实例时,我们建议使用小型max-fetch-size,以避免一个实例“抓取”所有文件并耗尽其他实例。

另一个用途max-fetch-size是要停止获取远程文件,但继续处理已获取的文件。 设置maxFetchSize属性MessageSource(以编程方式,使用 JMX 或控制总线)有效地阻止适配器获取更多文件,但允许 Poller 继续为以前获取的文件发出消息。 如果在更改属性时 poller 处于活动状态,则更改将在下一次轮询时生效。spring-doc.cadn.net.cn

从版本 5.1 开始,可以为同步器提供Comparator<FTPFile>. 这在限制使用maxFetchSize.spring-doc.cadn.net.cn

另请参阅 FTP 入站通道适配器 章节,以了解有关FileListFilter配置。spring-doc.cadn.net.cn