4

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

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

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

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

4

3 回答 3

3

您可以执行以下操作:

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)

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

于 2017-04-27T11:06:24.167 回答
2

JSR

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

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

于 2017-02-02T14:29:31.377 回答
1

跳过限制是一个整数,只要不超过最大值,您可以将其作为一个值:#{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'.
于 2020-05-04T10:08:10.970 回答