|
对于最新稳定版本,请使用Spring Batch Documentation 6.0.0! |
跳过逻辑配置
在处理过程中遇到的错误不应该导致许多情形步失败,但应该跳过。这通常是必须做出的决定
由理解数据本身及其意义的人制作。财务数据,
例如,可能无法跳过,因为这会导致资金被转移,而
必须完全准确。另一方面,加载提供商列表可能会有帮助
允许跳过。如果某个提供商因为格式错误或格式化而未加载
缺少必要信息,可能不会有问题。通常,这些都是坏事
记录也会被记录,后面讨论听众时会详细说明。
-
Java
-
XML
以下 Java 示例展示了跳跃限制的示例:
@Bean
public Step step1(JobRepository jobRepository, PlatformTransactionManager transactionManager) {
return new StepBuilder("step1", jobRepository)
.<String, String>chunk(10, transactionManager)
.reader(flatFileItemReader())
.writer(itemWriter())
.faultTolerant()
.skipLimit(10)
.skip(FlatFileParseException.class)
.build();
}
注:该skip极限可以通过skipLimit()方法。如果未指定,默认跳过限制为10。
以下XML示例展示了使用跳跃限制的示例:
<step id="step1">
<tasklet>
<chunk reader="flatFileItemReader" writer="itemWriter"
commit-interval="10" skip-limit="10">
<skippable-exception-classes>
<include class="org.springframework.batch.item.file.FlatFileParseException"/>
</skippable-exception-classes>
</chunk>
</tasklet>
</step>
在上述例子中,aFlatFileItemReader被使用。如果在任何时刻FlatFileParseException掷出时,该物品被跳过并计入总数
跳过上限10人。声明的例外(及其子类)可能会被抛出
在区块处理的任何阶段(读取、处理或写入)中。独立计数
由读取、处理和写入的跳跃组成
步骤执行,但限制适用于所有跳过。一旦跳过限制为
达到,发现下一个异常会导致该步骤失败。换句话说,就是第十一区
跳过触发的是例外,不是第十个例外。
上述例子的一个问题是,除了 a 之外,任何其他例外FlatFileParseException导致工作失败。在某些情况下,这可能是
正确的行为。然而,在其他情况下,可能更容易区分是哪种
例外应导致失败,跳过其他所有内容。
-
Java
-
XML
以下 Java 示例展示了排除特定异常的示例:
@Bean
public Step step1(JobRepository jobRepository, PlatformTransactionManager transactionManager) {
return new StepBuilder("step1", jobRepository)
.<String, String>chunk(10, transactionManager)
.reader(flatFileItemReader())
.writer(itemWriter())
.faultTolerant()
.skipLimit(10)
.skip(Exception.class)
.noSkip(FileNotFoundException.class)
.build();
}
注:该skip极限可以通过skipLimit()方法。如果未指定,默认跳过限制为10。
以下 XML 示例展示了排除特定例外的示例:
<step id="step1">
<tasklet>
<chunk reader="flatFileItemReader" writer="itemWriter"
commit-interval="10" skip-limit="10">
<skippable-exception-classes>
<include class="java.lang.Exception"/>
<exclude class="java.io.FileNotFoundException"/>
</skippable-exception-classes>
</chunk>
</tasklet>
</step>
通过识别java.lang.Exception作为可跳过的异常类,配置
表示所有异常可以跳过。然而,通过“排除”java.io.FileNotFoundException配置对可跳过列表进行了细化
例外类为全部异常 除了 FileNotFoundException.任何被排除的人
遇到例外类是致命的(即不跳过)。
对于遇到的任何例外,跳过性由最近的超类决定 在阶级等级中。任何未分类的例外都被视为“致命”。
-
Java
-
XML
顺序跳和不跳过方法调用无关紧要。
顺序<包括/>和<排除/>元素无关紧要。