SpringBatch(一):组件介绍

1、Job

Job可以理解是step的容器

2、JobInstance

指的是job运行当中,作业执行过程中的概念。可以理解为同一个job的不同实例

3、JobParameters

job运行时的参数
一个job可以对应多个jobInstance,jobParameters可以用来区别job的不同实例
JobInstance = Job + JobParameters

4、JobExecution

指的是单次尝试运行一个定义好的job的代码层面的概念
比如一个2021-09-13的jobInstance开始运行,可能成功也可能失败,但是只有成功的时候,这个instance才被视为完成
如果参数为2021-09-13的jobInstance运行失败了,此时如果使用和第一次运行参数一样的参数运行,就会创建一个对应于之前jobInstance的jobExecution实例,但是jobinstance仍然只有一个

5、step

每一个step对象都封装了批处理作业的一个独立阶段,可以理解为job运行的业务逻辑

6、stepExecution

stepExecution表示一次执行step,每次运行一个step都会创建一个新的stepExecution
某个step可能由于之前的step无法启动,仅当step实际启动时才会创建一个stepExecution
每个step执行都包含一个ExecutionContext,可以用来存储开发人员用到的数据

7、ExecutionContext

//是每一个stepExecution的执行环境,包含一些键值对
//可以用以下代码获取ExecutionContext
ExecutionContext ecStep = stepExecution.getExecutionContext();
ExecutionContext ecJob = jobExecution.getExecutionContext();

8、JobRepository

用于将job、step进行持久化的一个类,同时给job、step、jobLauncher实现提供CRUD操作
首次启动job时将从repository中获取JobExecution,并且在批处理执行过程中,stepExecution和jobExecution将被存储到repository中

9、jobLanucher

//用于启动指定了jobParamer的Job
public interface JobLauncher {
 
public JobExecution run(Job job, JobParameters jobParameters)
            throws JobExecutionAlreadyRunningException, JobRestartException,
                   JobInstanceAlreadyCompleteException, JobParametersInvalidException;
}
//上面代码的意思是,根据传入的Job以及parpmers从jobRepository中获取一个Jobexecution并执行

10、Item Reader

是一个读数据的抽象,他的功能是为step提供数据输入
当读取完数据时,会返回null来告诉后续数据已经读完
springbatch为它提供了很多有用的实现类

11、Item Writer

一个写数据的抽,可以一次写一条,也可以用chunk一次插入多条

12、Item Processor

是对项目业务逻辑处理的一个抽象,当读到一条数据之后,在写之前,可以用Item Processor进行一个逻辑处理

13、chunk 处理器

可以用来配置当读取到chunk条数据时,将数据送到writer,transaction也会提交

14、skip策略和失败处理

skipLimit:表示可以跳过的异常数量
skip:可以指定可以跳过的异常
noSkip:表示不想跳过的异常

15、如何默认不启动job

在项目启动时会运行定义好的job,如果不想运行,需要在application.properties文件中配置
spring.batch.job.enabled=false

16、批处理流程举例

1、业务系统通过RPC接口将服务暴露给批量系统,服务逻辑是根据request里的jobname,用jobLanucher实现批量的启动
2、业务系统在批量运行前后,使用AOP在运行前记录开始时间,在运行后打印日志,并给批量系统发送MQ
3、批量系统调用分组批量的第一个批量,并配置MQ监听,当其他系统发送成功MQ标识过来,查询分组配置表继续通过RPC调起对应系统的批量

参考文章:https://mp.weixin.qq.com/s/1B8h_8HZfFzrKTB3QsFUCQ

posted @ 2021-09-14 16:07  微醺的小布  阅读(200)  评论(0编辑  收藏  举报