如何计算batch_step_执行元数据表中的spring批提交计数

rggaifut  于 2021-08-25  发布在  Java
关注(0)|答案(1)|浏览(284)

我试图对我的spring批处理应用程序进行一些验证,该应用程序由1个作业和1个步骤(taskletstep)组成,其中有一个读卡器/处理器/写入器。
现在,我注意到,在验证数据库中执行元数据表的读/写计数时,每次提交计数似乎都不正确,或者说我缺乏理解。例如,我读取了一个简单的csv文件,其中有10行。我将区块大小设置为3。现在,根据下图和我的理解,框架将通过csv中的项目读取器读取每一行,并将其传递给项目处理器,然后继续读取下一个要读取的项目,直到达到区块大小。因此,根据我的虚拟示例,顺序应如下所示:
读取item1并将其传递给处理器(块大小尚未满足,1/3)
读取项2,然后传递给处理器(块大小尚未满足,2/3)
读取项3,然后将其传递给处理器(块大小尚未满足,3/3)
块大小为3的要求得到满足,因此整个块被传递给writer,然后应计为1个commit( Package 在一个事务中)。

我在本地有这个精确的设置,出于某种原因,我一直得到一个 commit_count 在数据库中的batch_step_execution元数据表中为5。现在,这对我来说没有意义,因为10只能被3整除3次,因此余数或item10(最后一项)将是提交总数为4的最后一个事务。
我是不是遗漏了什么?我想确保我完全理解这个框架,谢谢。

gorkyyrv

gorkyyrv1#

将有一个额外的提交来写入最终步骤/作业状态。
因此,4个用于块,另外一个用于最终状态更改。

相关问题