我有一个使用Spring Batch 3.0.6的应用程序 . Spring Batch作业使用块处理 . 提交间隔设置为100,重试限制设置为5 .

当达到提交间隔时,编写器将数据块(100条记录)写入另一个应用程序(通过TCP) . 如果其中一个记录是坏的(无论出于什么原因它会导致异常),那么Spring Batch会尝试将块写入5次(重试限制)并且每次都失败(如预期的那样) .

然后,Spring Batch尝试通过一次重试一个(即提交间隔= 1)来找出块中100个记录中的哪一个失败 . 这似乎是重试的默认行为 .

有没有办法通过一次重试10条记录并逐步缩小重试大小直到找到违规记录来提高效率 . 这样,如果第95条记录不好,那么我们发现它比从记录1开始一次检查一条记录要快 .

我从2011年发现这篇文章:

Spring Batch: Commit-Interval not honored after roll back during write

有没有办法让SB首先尝试较小的块来缩小坏记录的位置 . 较小的块大小(例如,10个项目)可以是可选的用户可配置项目,之后SB可以一次尝试一个项目来查找坏记录 .