此方案的解决方案 - 提交间隔为 10,跳过限制为 10,总输入记录为 20,前 9 条记录有效,其余无效。
当已读取 9 条记录时,第 10 条无效。块大小为 10,跳过限制为 10,那么 Spring 会批量将这 9 条记录写入输出文件吗?如果没有,如果继续读取剩余的记录,当它读取第 20 条记录时,错误记录的计数将为 11,定义的跳过限制为 10。因此该过程将立即停止。首先读取的有效记录的命运如何。
前 9 条记录是否会写入输出文件。
如果有任何解决方案,请告诉我。谢谢!
此方案的解决方案 - 提交间隔为 10,跳过限制为 10,总输入记录为 20,前 9 条记录有效,其余无效。
当已读取 9 条记录时,第 10 条无效。块大小为 10,跳过限制为 10,那么 Spring 会批量将这 9 条记录写入输出文件吗?如果没有,如果继续读取剩余的记录,当它读取第 20 条记录时,错误记录的计数将为 11,定义的跳过限制为 10。因此该过程将立即停止。首先读取的有效记录的命运如何。
前 9 条记录是否会写入输出文件。
如果有任何解决方案,请告诉我。谢谢!
可能的结果不止一种。您必须具体说明无效记录。
它们是否无效读取: 在这种情况下,SB 只会调用 ItemReader 下一个值(不回滚)。因此,您最终会遇到跳过限制异常,因为发现 11 条记录无效。
它们是否无效写入:在这种情况下,SB 将在提交时重做第一个块——间隔为 1,直到它找到坏记录。在这种情况下,您应该在数据库中找到前 9 条记录。
问候
对于这种情况 - 提交间隔为 10,跳过限制为 10,总输入记录为 20,前 9 条记录有效,其余无效。
当已读取 9 条记录时,第 10 条无效。块大小为 10,跳过限制为 10,因此 Spring 会将这 9 条记录批量写入输出文件。
Answer-SB 将跳过第 10 条无效记录并读取第 11 条记录,然后让 writer 写入正确的第 10 条记录,因为只有一条记录无效,所以跳过计数将为 1。
示例配置 -