spring - 我如何知道在 Spring Batch Step 开始时要处理的块/项目的总数?
问题描述
我正在尝试使用我的批处理作业并为我的批处理作业使用进度条,就像这里的那样:https ://github.com/ctongfei/progressbar
但是,要准确填充上面链接的进度条,我需要知道作业中要处理的块/元素的总数。
我希望将其添加到我的 ChunkListener 中。在这里,我可以通过 ChunkContext 获取已读取 -> 已处理 -> 写入的项目计数:
context.getStepContext().getStepExecution().getWriteCount()
但是,我无法弄清楚的是如何在步骤进行时获取步骤中的块总数或项目总数。Spring Batch 有这个能力吗?如果是这样,我如何获得这个值?
解决方案
Spring Batch 不提供此功能,因为它严重依赖于输入数据。您需要预先计算记录总数,并使用该信息来计算步骤执行期间的进度。
可以使用作业/步骤侦听器或例如将信息放在执行上下文中的小任务来计算记录总数。然后, ItemReadListener
可以使用 an 来根据当前项目数和总项目数计算进度。
推荐阅读
- r - lapply中的RSelenium StaleElementReference错误
- swiftui - SwiftUI:点击更改 TectField 背景颜色
- python - 模拟数据库游标并断言传递给游标函数的值
- r - 在 R 中的文本文件中提取重复出现的行/模式
- python - 如何在python中制作一个矩阵数组?
- java - 当小时、分钟和秒为零时,OffsetDateTime 解析忽略秒
- python - 请参阅下面的代码中的 def __str__(self):。它不影响输出,但应该。期待帮助
- python - 需要帮助理解这个 Python 列表语法
- reactjs - React 中的语义 UI 卡片组
- python - 删除数据集中的所有行 >= 一个值