热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

SpringBatch异常处理与任务限制优化策略

原标题:SpringBatch跳过异常和限制SpringBatch容错处理 1. 案例说明 从DB中reader出1000条数据,chunk = 100,当第二个chunk出现NullPointerE

原标题:SpringBatch跳过异常和限制


SpringBatch容错处理


1. 案例说明

从DB中reader出1000条数据,chunk = 100,当第二个chunk出现NullPointerException或者StringIndexOutOfBoundsException异常。业务要求batch不终了,程序继续执行。


2. 跳过异常限制

下记有两种实现方法。


2.1 skip 和 skipLimit配置

@Bean
public Step job1step1() throws Throwable {
return stepBuilderFactory
.get(_JOB_STEP_NAME)
.listener(_stepListener)
.chunk(_CHUNK_SIZE)
.reader(rea文章来源地址50595.htmlder())
.processor(processor())
.writer(writer())
.faultTolerant()
.skipLimit(10)
.skip(NullPointerException.class)
.skip(StringIndexOutOfBoundsException.class)
.build();
}

上记代码示例中的skipLimit方法限制最大跳过数,skip方法限制跳过的异常类型。
这样某条数据出现异常时,并不会终了step,而是跳过本条错误数据,继续处理下一条。


2.2 自定义跳过配置SkipPolicy 接口

SkipPolicy相对于skip更加灵活。
例:业务要求,userId = 110的用户出现上记两个异常时,程序终了。

step代码

@Bean
www.yii666.compublic Step job1step1() throws Throwable {
return stepBuilderFactory
.get(_JOB_STEP_NAME)
.listener(_stepListener)
.chunk(_CHUNK_SIZE)
.reader(reader())
.processor(processor())
.writer(writer())
.faultTolerant()
.skipPolicy(new SkipPolicyTask())
.build();
}

自定义SkipPolicywww.yii666.com 接口代码

public class SkipPolicyTask implements SkipPolicy {
private static final int MAX_SKIP_COUNT = 10;
private static final int USER_ID= 110;
@Override
public boolean isSkipFlg(Throwable throwable, int skipCount)
throws SkipLimitExceededException {
if (throwable instanceof NullPointerException && skipCount return true;
文章来源站点https://www.yii666.com/ }
if (throwable instanceof StringIndexOutOfBoundsException && skipCount if(common.getUserId == INVALID_TX_AMOUNT_LIMIT) {
return false;
} else {
return true;
}
}
retu文章来源地址50595.htmlrn false;
}
}

return flase 程序终了,retuen true 跳过异常。

来源于:SpringBatch跳过异常和限制


推荐阅读
author-avatar
开发工程师
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有