【问题标题】:Spring batch jsr 352 skip-limit how to get unlimited default or set unlimitedSpring batch jsr 352跳过限制如何获得无限默认或设置无限
【发布时间】:2015-09-24 20:19:01
【问题描述】:

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

jsr 352 明确声明“默认为无限制”。但是在实际定义可跳过的异常时,我还没有弄清楚如何获得默认值。

我尝试了 0 和 -1,但在创建作业时,弹簧批处理在步骤上所做的正数验证都失败了。如果在定义可跳过的异常时未添加 skip-limit 属性,则会生成错误并且不会启动作业。

我是否误解了规范的含义,或者在这种情况下,spring batch 没有正确实现 jsr。从表面上看,skip-limit 应该有一些默认为无限值的方法。

【问题讨论】:

    标签: spring-batch jsr352


    【解决方案1】:

    你可以这样做:

    public class ItemSkipPolicy implements SkipPolicy {
    
    public boolean shouldSkip(final Throwable t, final int skipCount) throws SkipLimitExceededException {
        return true;
    }
    

    并使用跳过策略而不是 skipLimit

    .faultTolerant().skipPolicy(new ItemSkipPolicy()).skip(RuntimeException.class)
    

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

    【讨论】:

      【解决方案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' 超出
      【解决方案3】:

      skip-limit 是一个整数,只要不超过最大值,您可以将其作为一个值:#{T(java.lang.Integer).MAX_VALUE}。在步骤配置中不提供跳过限制会引发 Spring 批处理错误:

      The field 'skippable-exception-classes' is not permitted on the step [stepName] because there is no 'skip-limit'.
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-12-01
        • 2023-04-07
        • 1970-01-01
        • 1970-01-01
        • 2019-02-22
        • 1970-01-01
        • 2023-03-09
        • 2015-05-19
        相关资源
        最近更新 更多