首页 > 解决方案 > 我如何知道在 Spring Batch Step 开始时要处理的块/项目的总数?

问题描述

我正在尝试使用我的批处理作业并为我的批处理作业使用进度条,就像这里的那样:https ://github.com/ctongfei/progressbar

但是,要准确填充上面链接的进度条,我需要知道作业中要处理的块/元素的总数。

我希望将其添加到我的 ChunkListener 中。在这里,我可以通过 ChunkContext 获取已读取 -> 已处理 -> 写入的项目计数:

context.getStepContext().getStepExecution().getWriteCount()

但是,我无法弄清楚的是如何在步骤进行时获取步骤中的块总数或项目总数。Spring Batch 有这个能力吗?如果是这样,我如何获得这个值?

标签: springspring-batch

解决方案


Spring Batch 不提供此功能,因为它严重依赖于输入数据。您需要预先计算记录总数,并使用该信息来计算步骤执行期间的进度。

可以使用作业/步骤侦听器或例如将信息放在执行上下文中的小任务来计算记录总数。然后, ItemReadListener可以使用 an 来根据当前项目数和总项目数计算进度。


推荐阅读