Spring Batch JSR 352 Skip-Limit如何获得默认无限制或设置无限制

Mar*_*uba 5 spring-batch jsr352

我试图弄清楚如何为跳过限制设置无限值,而不仅仅是随机定义一个非常大的整数值。

jsr 352 特别指出“默认没有限制”。但我还没有弄清楚在实际定义可跳过异常时如何获得默认值。

我尝试了 0 和 -1,但都未能通过 Spring Batch 在创建作业时的步骤中执行的正数验证。如果在定义了可跳过异常时未添加跳过限制属性,则会生成错误并且不会启动作业。

我是否误解了规范的内容,或者 Spring Batch 在这种情况下没有正确实现 jsr?从表面上看,skip-limit 应该有某种默认为无限值的方法。

Mar*_*ber 5

你可以这样做:

public class ItemSkipPolicy implements SkipPolicy {

public boolean shouldSkip(final Throwable t, final int skipCount) throws SkipLimitExceededException {
    return true;
}
Run Code Online (Sandbox Code Playgroud)

并使用跳过策略而不是skipLimit

.faultTolerant().skipPolicy(new ItemSkipPolicy()).skip(RuntimeException.class)
Run Code Online (Sandbox Code Playgroud)

如果其他人看到此页面,希望这会有所帮助


Cha*_*let 2

来自JSR

Skip-limit:指定如果块处理抛出任何配置的可跳过异常,则步骤将跳过的异常数。它必须是有效的 XML 整数值。它是一个可选属性。默认没有限制。

如果您尊重 Spring Batch 中的 JSR,您应该有这种行为。如果您不遵循 JSR,您将面临BATCH-2443

  • 使用faultTolerant().skip(Exception.class)而不指定skipLimit属性意味着默认值为0: org.springframework.batch.core.step.skip.SkipLimitExceededException: Skip limit of '0'超出 (5认同)