SkipListener监听器就是SpringBatch在读,处理,写时候发生异常,程序不会断批,发生这些异常的数据会跳过去,继续执行job。
例如:当程序发生DuplicateKeyException异常时我们可以跳过这条数据,记录异常报表中。
Chunk监听器有两种实现方式:
1、使用注解@OnSkipInRead、@OnSkipInWrite、@OnSkipInProcess
2、实现接口SkipListener
我们以第二种实现方式为例 实现SkipListener
先打开监听器faultTolerant,另一个参数skipLimit是代表,发生多少次数之后,程序会停止。
CatSkipListener
package com.sl.listener;
import org.springframework.batch.core.SkipListener;
import org.springframework.stereotype.Component;
* @author shuliangzhao
* @Title: CatSkipListener
* @ProjectName spring-boot-learn
* @Description: TODO
* @date 2019/9/12 19:18
@Component
public class CatSkipListener implements SkipListener {
@Override
public void onSkipInRead(Throwable throwable) {
System.out.println("读的时候发生错误");
@Override
public void onSkipInWrite(Object o, Throwable throwable) {
System.out.println("写的时候发生错误");
@Override
public void onSkipInProcess(Object o, Throwable throwable) {
System.out.println("处理的时候发生错误");
在创建step时候添加监听器
@Bean
public Step catStep() {
return stepBuilderFactory.get("catStep")
.<Cat, CafeCat>chunk(10)
.reader(catCommonMybatisItemReader())
.processor(cafeCatProcessor)
.writer(cafeCatCommonFileItemWriter())
.faultTolerant()
.skip(DuplicateKeyException.class)
.skipLimit(Integer.MAX_VALUE)
.build();
以上是我们之Chunk监听器(ChunkListener)和Skip监听器(SkipListener)简单介绍和用法
写在前面: 我是「境里婆娑」。我还是从前那个少年,没有一丝丝改变,时间只不过是考验,种在心中信念丝毫未减,眼前这个少年,还是最初那张脸,面前再多艰险不退却。
写博客的目的就是分享给大家一起学习交流,如果您对 Java感兴趣,可以关注我,我们一起学习。
前言:为什么要写这篇文章,由于长时间都是在使用连接数据库第三方框架Mybatis等,不使用JDBC操作,导致很多基础知识都朦朦胧胧似懂非懂,今天抽空把这部分内容认真复习了下,顺便写篇文章加深印象。本文以MySql为例。
语文中有个词叫上下文,比如:联系上下文解读一下作者所有表达意思。从这看上下文有环境,语境,氛围的意思。类比到编程,业内也喜欢使用Context表示上下文。比如Spring容器: SpringApplicationContext 。有上下文这个铺垫之后,我们来看下Spring Batch的上下文。
* Licensed under the Apache License, Version 2.0
1.skip层的skip()和skipLimit()方法
skipLimit() 用于指定跳过该异常的最大次数,如超过1000次则不跳过。
skip() 用于指定所要跳过的异常类型
参考如下:
@Bean
public Step step1() {
//这个版本不带数据处理校验规则
Job监听器 :监听job的执行开始和结束;
SkipListener监听器 :在读、处理、写的过程中,监听跳过的异常;
ChunkListener监听器 :监听的chunk的执行开始和结束,或者监听chunk出错。
一、Step监听器
首先创建一个step监听器,实现StepExe...
进阶Spring Batch四种模式的理解
官方文档链接:https://docs.spring.io/spring-batch/trunk/reference/html/index.html
如有不正确的地方,欢迎下方留言指正。本文为自主原创,如有需要转载请与博主联系并说明出处,谢谢。
相信读者在看到这篇文章之前已经对spring batch已经有了初步了解,这里就不在赘述那些基本介绍(主...
Chunk操作中提供了丰富的拦截器机制,拦截器可以实现额外的控制能力,例如日志记录、任务跟踪、状态报告、数据传递等能力,
在SpringBatch的处理过程中,尽可能地保持业务的简单性,任何额外的处理需要在拦截器中进行功能实现
Chunk拦截器接口
在 Job 开始之前(beforeJob)和之后(afterJob)触发
StepExecutionListener
在 Step 开始之前(beforeStep)和之后(afterStep)触发
ChunkListener
在 Chunk 开始之前(beforeC
前面的文章跟大家一起讨论了Spring Batch的概念,处理流程,以及SpringBatch处理文件、DB的一些简单实例。接下来的讨论,主要是关于Spring Batch的一些高级应用处理和实际开发中需要注意的一些问题。
今天主要和大家讨论SpringBatch关于skip容错机制的一些处理。
一、skip的介绍
在实际的项目开发中,我们常常...