Spring Batch - 提交间隔和跳过限制

时间:2012-12-23 10:30:21

标签: java spring transactions spring-batch commit

此方案的解决方案 - 提交间隔为10,跳过限制为10,总输入记录为20,前9条记录有效,保持无效。

当已经读取了9条记录时,第10条记录无效。块大小为10,跳过限制为10,因此Spring批处理会将这9条记录写入输出文件中吗? 如果没有,如果继续读取剩余记录,当它读取第20条记录时,错误记录的计数将为11,并且跳过限制定义为10.因此该过程将立即停止。首先阅读有效记录的命运怎么样。

前9条记录是否会写入输出文件。

如果有任何解决方案,请告诉我。谢谢!

2 个答案:

答案 0 :(得分:1)

有多种可能的结果。您必须具体说明无效记录。

它们是无效读取:在这种情况下,SB只会调用ItemReader下一个值(无回滚)。所以你最终会得到一个Skip限制异常,因为发现11条记录无效。

它们是无效写入:在这种情况下,SB将在提交时重做第一个块 - 间隔为1,直到找到坏记录。在这种情况下,您应该在数据库中找到前9条记录。

此致

答案 1 :(得分:1)

对于这种情况 - 提交间隔为10,跳过限制为10,总输入记录为20,前9条记录有效,保持无效。

当已经读取了9条记录时,第10条记录无效。块大小为10,跳过限制为10,因此Spring批处理将这9条记录写入输出文件。

答案 - SB将跳过第10个无效记录并读取第11个记录然后将使作者写入正确的第10个记录,并且只有一个记录是无效的跳过计数将是1。

示例配置 -