我试图看中我的批处理作业,并为我的批处理作业使用进度条,就像这里的https://github.com/ctongfei/progressbar
要准确地填充进度条,如上面的链接,我需要知道作业中要处理的块/元素的总数。
我希望将此添加到我的ChunkListener中。在这里,我可以获取通过ChunkContext读取->处理->写入的项目数:
context.getStepContext().getStepExecution().getWriteCount()
但是,我无法弄清楚的是,如何在执行步骤的同时获取步骤中的块总数或项目总数。 Spring Batch是否具有此功能?如果是这样,我如何获得该值?
答案 0 :(得分:1)
Spring Batch不提供此功能,因为它很大程度上取决于输入数据。您需要预先计算记录总数,并使用该信息来计算步骤执行期间的进度。
例如,可以使用作业/步骤侦听器或Tasklet(将信息放入执行上下文中)完成记录总数的计算。然后,可以使用ItemReadListener
根据当前项目数和总项目数来计算进度。
答案 1 :(得分:0)
您可以使用StepExecutionListener's beforeStep
方法来计算要处理的项目总数。将该值除以CHUNK SIZE
,将得到要处理的块数。