Spring批处理jsr 352 skip-limit如何获得无限制默认值或设置无限制

时间:2015-09-24 20:19:01

标签: spring-batch jsr352

我试图找出如何设置skip-limit的无限值,而不是随机定义一个非常大的整数值。

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

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

我错误解释了规范的含义,或者是Spring批处理在这种情况下没有正确实现jsr。从表面上看,跳过限制应该有一些默认值无限制的方法。

3 个答案:

答案 0 :(得分:1)

来自JSR

  

skip-limit :指定如果任何已配置的可跳过步骤将跳过的例外数量   块处理引发异常。它必须是有效的XML整数值。   它是一个可选属性。默认值没有限制。

如果你尊重春季批次中的JSR,你应该有这种行为。如果你不遵守JSR,你将面对BATCH-2443

答案 1 :(得分:1)

你可以这样做:

public class ItemSkipPolicy implements SkipPolicy {

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

并使用skip政策而不是skipLimit

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

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

答案 2 :(得分:1)

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'.