首页 > 解决方案 > 在一定数量的记录后停止 Mule Batch Job

问题描述

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

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

提前致谢。

标签: apiimage-processingbatch-processingdataweavemule4

解决方案


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

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

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

sftp:list 操作似乎没有办法配置它,但它的输出是一个消息数组。您可以使用 DataWeave 脚本来拆分数组。例如take()操作似乎只是做需要的事情。它将返回数组的前 n 个元素。

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


推荐阅读