我试图喜欢我的批处理作业,并为我的批处理作业使用进度条,就像这里的一样:https://github.com/ctongfei/progressbar
但是,为了准确填充进度条(如上面链接的进度条),我需要知道作业中要处理的块/元素的总数。
我希望将其添加到我的 ChunkListener 中。在这里,我可以通过 ChunkContext 获取已读取 -> 已处理 -> 已写入的项目数:
context.getStepContext().getStepExecution().getWriteCount()
但是,我无法弄清楚的是,在步骤正在进行时如何获取步骤中的块总数或项目总数。 Spring Batch有这个能力吗?如果是这样,我如何获得这个值?
Spring Batch 不提供此功能,因为它严重依赖于输入数据。您需要预先计算记录总数,并使用该信息来计算步骤执行期间的进度。
计算记录总数可以使用作业/步骤侦听器或微线程来完成,例如将信息放入执行上下文中。然后,可以使用
ItemReadListener
根据当前项目数和总项目数来计算进度。
您可以使用
StepExecutionListener's beforeStep
方法来计算要处理的项目总数。将该值除以 CHUNK SIZE
,您将得到要处理的块数。
我也有同样的问题,有人已经实现了吗?有人可以提供更多有关此的详细信息吗?