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

时间:2019-07-19 22:16:22

标签: spring spring-batch

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

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

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

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

但是,我无法弄清楚的是,如何在执行步骤的同时获取步骤中的块总数或项目总数。 Spring Batch是否具有此功能?如果是这样,我如何获得该值?

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

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