我试图找出如何设置skip-limit的无限值,而不是随机定义一个非常大的整数值。
jsr 352明确指出“默认为无限制”。但在实际定义可跳过的异常时,我还没弄清楚如何获得默认值。
我尝试了0和-1,但两者都失败了春季批处理在创建作业时对步骤进行的正数验证。如果在定义了可跳过的异常时未添加skip-limit属性,则会生成错误并且不会启动该作业。
我错误解释了规范的含义,或者是Spring批处理在这种情况下没有正确实现jsr。从表面上看,跳过限制应该有一些默认值无限制的方法。
答案 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'.