我有一个使用 Spring Batch 3.0.6 的应用程序。Spring Batch 作业使用块处理。提交间隔设置为 100,重试限制设置为 5。
当达到提交间隔时,写入器将数据块(100 条记录)写入另一个应用程序(通过 TCP)。如果其中一条记录是错误的(无论出于何种原因导致异常),那么 Spring Batch 会尝试写入该块 5 次(重试限制)并且每次都失败(如预期的那样)。
Spring Batch 然后尝试通过一次重试一条记录来找出块中的 100 条记录中的哪一条失败(即提交间隔 = 1)。这似乎是重试的默认行为。
有没有办法通过一次重试 10 条记录并逐渐缩小重试大小直到找到有问题的记录来提高效率。这样,如果第 95 条记录是坏的,那么我们发现它比从记录 1 开始一次检查它们更快。
我从 2011 年发现了这篇文章:
有没有办法让 SB 首先尝试更小的块来缩小坏记录的位置。较小的块大小(例如,10 个项目)可以是可选的用户可配置项目,之后 SB 可以一次尝试一个项目来查找不良记录。