我使用spring批处理将数据从文件加载到数据库。作业仅包含一个步骤。我使用ThreadPoolTaskExecutor并发执行步骤。步骤与此类似。
public Step MyStep(){
return StepBuilderFactory.get("MyStep")
.chunk(10000)
.reader(flatFileItemWriter)
.writer(jdbcBatchItemWriter)
.faultTolerant()
.skip(NumberFormatException.class)
.skip(FlatFileParseException.class)
.skipLimit(3)
.throttleLImit(10)
.taskExecutor(taskExecutor)
.build();
}
我的文件中有 3 个“数字格式”错误,所以我设置了 skipLimit 3,但我发现当我执行作业时,它将启动 10 个线程,每个线程有 3 个跳过,所以我总共有 3 * 10 = 30 个跳过,而我只需要 3 个。
所以问题是这会导致任何问题吗?还有其他方法可以在同时执行一个步骤的同时准确跳过 3 次吗?