在一定数量的记录后停止 Mule 批处理作业

Stop a Mule Batch Job after a certain amount of records

我正在使用批处理作业通过 API 读取和更新图像。图像是从文件夹中读取的,文件夹中可以有数百张图像。由于它在服务器上非常繁重,我只想读取和处理 100 张图像,然后停止该过程并在几个小时后读取另外 100 张等

我已将批处理块大小设置为 100,但批处理作业将继续 运行 数小时,直到它处理完文件夹中的所有图像。我怎样才能让它只读取和处理 100 张图像然后再次停止?

提前致谢。

你不能也不应该尝试。 Batch 旨在处理它收到的所有记录。

一种解决方案是发送较少的记录。例如从文件夹中读取较少的记录,或者丢弃除前 100 条以外的所有记录。

另一种解决方案可以让批处理所有记录,但将并发性降低到 1,以便逐块顺序处理记录。

sftp:list 操作似乎无法配置它,但它的输出是一组消息。您可以使用 DataWeave 脚本拆分数组。例如,take() 操作似乎可以满足需要。它将 return 数组的前 n 个元素。

请注意,您必须确保这些元素已被消耗,否则它们将一直被处理。