我如何知道在 Spring Batch 步骤开始时要处理的块/项目的总数?

问题描述 投票:0回答:3

我试图喜欢我的批处理作业,并为我的批处理作业使用进度条,就像这里的一样:https://github.com/ctongfei/progressbar

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

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

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

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

spring spring-batch
3个回答
5
投票

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

计算记录总数可以使用作业/步骤侦听器或微线程来完成,例如将信息放入执行上下文中。然后,可以使用

ItemReadListener
根据当前项目数和总项目数来计算进度。


0
投票

您可以使用

StepExecutionListener's beforeStep
方法来计算要处理的项目总数。将该值除以
CHUNK SIZE
,您将得到要处理的块数。


0
投票

我也有同样的问题,有人已经实现了吗?有人可以提供更多有关此的详细信息吗?

© www.soinside.com 2019 - 2024. All rights reserved.