Spring Batch异常处理
Spring Batch异常处理Spring Batch处理任务过程中如果发生了异常,默认机制是马上停止任务执行,抛出相应异常,如果任务还包含未执行的步骤也不会被执行。要改变这个默认规则,我们可以配置异常重试和异常跳过机制。异常跳过:遇到异常的时候不希望结束任务,而是跳过这个异常,继续执行;异常重试:遇到异常的时候经过指定次数的重试,如果还是失败的话,才会停止任务。除了这两个特性外,本文也会记录一些别的特性。
框架搭建新建一个Spring Boot项目,版本为2.2.4.RELEASE,artifactId为spring-batch-exception,项目结构如下图所示:剩下的数据库层的准备,项目配置,依赖引入和Spring Batch入门文章中的框架搭建步骤一致,这里就不再赘述。
下面我们演示下,默认情况下Spring Batch处理任务遇到异常是怎么处理的。
在cc.mrbird.batch目录下新建job包,然后在该包下新建DefaultExceptionJobDemo:
123456789101112131415161718192021222324252627282930@C ...
Spring Batch监听器
Spring Batch监听器Spring Batch提供了多种监听器Listener,用于在任务处理过程中触发我们的逻辑代码。常用的监听器根据粒度从粗到细分别有:Job级别的监听器JobExecutionListener、Step级别的监听器StepExecutionListener、Chunk监听器ChunkListener、ItemReader监听器ItemReadListener、ItemWriter监听器ItemWriteListener和ItemProcessor监听器ItemProcessListener等。具体可以参考下表:
监听器
具体说明
JobExecutionListener
在Job开始之前(beforeJob)和之后(aflerJob)触发
StepExecutionListener
在Step开始之前(beforeStep)和之后(afterStep)触发
ChunkListener
在 Chunk 开始之前(beforeChunk),之后(afterChunk)和错误后(afterChunkError)触发
ItemReadLis ...
Spring Batch处理数据
Spring Batch处理数据2020-03-09 | Visit count
在Spring Batch中,ItemReader接口用于读取数据,ItemWriter接口用于输出数据。除此之外,我们可以通过ItemProcessor接口实现数据的处理,包括:数据校验,数据过滤和数据转换等。数据处理的时机发生于ItemReader读取数据之后,ItemWriter输出数据之前。本节记录下Spring Batch中ItemProcessor的使用。
框架搭建新建一个Spring Boot项目,版本为2.2.4.RELEASE,artifactId为spring-batch-itemprocessor,项目结构如下图所示:
剩下的数据库层的准备,项目配置,依赖引入和Spring Batch入门文章中的框架搭建步骤一致,这里就不再赘述。
在介绍Spring Batch ItemProcessor之前,我们先准备个简单的数据读取源。在cc.mrbird.batch包下新建entity包,然后在该包下新建TestData实体类:
12345678public class TestData ...
Spring Batch输出数据
Spring Batch输出数据通过ItemWriter接口的实现类来完成,包括FlatFileItemWriter文本数据输出、StaxEventItemWriter XML文件数据输出、JsonItemWriter JSON文件数据输出、JdbcBatchItemWriter数据库数据插入等实现,更多可用的实现可以参考:https://docs.spring.io/spring-batch/docs/4.2.x/reference/html/appendix.html#itemWritersAppendix,本文只介绍这四种比较常用的输出数据方式。
框架搭建新建一个Spring Boot项目,版本为2.2.4.RELEASE,artifactId为spring-batch-itemwriter,项目结构如下图所示:剩下的数据库层的准备,项目配置,依赖引入和Spring Batch入门文章中的框架搭建步骤一致,这里就不再赘述。
在介绍Spring Batch数据输出之前,我们先准备个简单的数据读取源。在cc.mrbird.batch包下新建entity包,然后在该包下新建TestDa ...
Spring Batch读取数据
Spring Batch读取数据2020-03-07 | Visit count
Spring Batch读取数据通过ItemReader接口的实现类来完成,包括FlatFileItemReader文本数据读取、StaxEventItemReader XML文件数据读取、JsonItemReader JSON文件数据读取、JdbcPagingItemReader数据库分页数据读取等实现,更多可用的实现可以参考:https://docs.spring.io/spring-batch/docs/4.2.x/reference/html/appendix.html#itemReadersAppendix,本文只介绍这四种比较常用的读取数据方式。
框架搭建新建一个Spring Boot项目,版本为2.2.4.RELEASE,artifactId为spring-batch-itemreader,项目结构如下图所示:剩下的数据库层的准备,项目配置,依赖引入和Spring Batch入门文章中的框架搭建步骤一致,这里就不再赘述。
简单数据读取前面提到,Spring Batch读取数据是通过ItemR ...
Spring Batch入门
Spring Batch入门企业中经常会有需要批处理才能完成的业务操作,比如:自动化地处理大批量复杂的数据,如月结计算;重复性地处理大批量数据,如费率计算;充当内部系统和外部系统的数据纽带,中间需要对数据进行格式化,校验,转换处理等。
Spring Batch是一个轻量级但功能又十分全面的批处理框架,本节我们将通过一些简单的例子来入门Spring Batch。
框架搭建新建一个Spring Boot项目,版本为2.2.4.RELEASE,artifactId为spring-batch-start,项目结构如下图所示:然后在pom中引入Spring Batch、MySQL和JDBC依赖,引入后pom内容如下所示:
123456789101112131415161718192021222324252627282930313233343536373839404142434445<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache ...