跳到主要内容
版本:6.0.2

配置跳过逻辑

DeepSeek V3 中英对照 Configuring Skip Logic

在许多处理场景中,遇到的错误不应导致Step失败,而应跳过。这通常需要由理解数据本身及其含义的人员来决定。例如,金融数据可能不可跳过,因为它涉及资金转移,需要完全准确。另一方面,加载供应商列表可能允许跳过。如果某个供应商因格式错误或缺少必要信息而未能加载,可能不会造成问题。通常,这些错误记录也会被记录下来,这将在后续讨论监听器时涉及。

以下 Java 示例展示了使用跳过限制的示例:

@Bean
public Step step1(JobRepository jobRepository, PlatformTransactionManager transactionManager) {
int skipLimit = 10;
var skippableExceptions = Set.of(FlatFileParseException.class);
SkipPolicy skipPolicy = new LimitCheckingExceptionHierarchySkipPolicy(skippableExceptions, skipLimit);

return new StepBuilder("step1", jobRepository)
.<String, String>chunk(10).transactionManager(transactionManager)
.reader(flatFileItemReader())
.writer(itemWriter())
.faultTolerant()
.skipPolicy(skipPolicy)
.build();
}

注意:skipLimit 可以通过 skipLimit() 方法显式设置。

在前面的示例中,使用了 FlatFileItemReader。如果在任何时刻抛出了 FlatFileParseException,该项将被跳过,并计入总跳过限制 10 次。在块处理(读取、处理或写入)的任何阶段,都可能抛出已声明的异常(及其子类)。在步骤执行中,读取、处理和写入的跳过次数是分别统计的,但限制适用于所有跳过。一旦达到跳过限制,下一个发现的异常将导致步骤失败。换句话说,第十一次跳过会触发异常,而不是第十次。

备注

跳过限制适用于所有跳过操作(读取、处理和写入)。