Spring batch Spring batch jsr 352跳过限制如何获得无限制默认值或设置无限制

Spring batch Spring batch jsr 352跳过限制如何获得无限制默认值或设置无限制,spring-batch,jsr352,Spring Batch,Jsr352,我试图找出如何设置一个无限值跳过限制,而不只是随机定义一个非常大的整数值 JSR352特别声明“默认值是无限制的”,但我还没有弄清楚在实际定义可跳过的异常时如何获得默认值 我尝试了0和-1,但都没有通过SpringBatch在创建作业时在步骤上进行的正数验证。如果在定义了可跳过异常时未添加“跳过限制”属性,则会生成错误并不会启动作业 我是否误解了规范所说的内容,或者SpringBatch在本例中没有正确实现jsr。表面上看来,跳过限制应该有一些默认为无限值的方法 来自: 跳过限制:指定一个步骤将

我试图找出如何设置一个无限值跳过限制,而不只是随机定义一个非常大的整数值

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

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

我是否误解了规范所说的内容,或者SpringBatch在本例中没有正确实现jsr。表面上看来,跳过限制应该有一些默认为无限值的方法

来自:

跳过限制:指定一个步骤将跳过的异常数(如果有任何配置的可跳过的异常) 异常由块处理引发。它必须是有效的XML整数值。 它是一个可选属性。默认值为无限制


如果您尊重spring批处理中的JSR,那么您应该具有这种行为。如果您不遵循JSR,您将面临这样的问题。

您可以采取以下措施:

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)

希望如果其他人看到此页面,这会有所帮助。跳过限制是一个整数,只要不超过最大值,就可以将其作为一个值:#{T(java.lang.integer).max_value}。如果在步骤配置中不提供跳过限制,则Spring batch会引发错误:

The field 'skippable-exception-classes' is not permitted on the step [stepName] because there is no 'skip-limit'.
使用faultTolerant().skip(Exception.class)而不指定skipLimit属性意味着默认值为0:org.springframework.batch.core.step.skip.SkipLimitExceedeException:超出了“0”的跳过限制