文档
https://www.docs4dev.com/docs/zh/spring-batch/4.1.x/reference/domain.html#domainLanguageOfBatch
https://www.wenjiangs.com/doc/txqspanos
什么是Spring Batch
大批量处理数据流程往往经过以下步骤:
1.从数据源读取数据excel,数据库、csv、txt文件等
2.然后经过加工过滤后
3.针对加工过滤后数据进行处理(业务逻辑处理、写入数据库 excel、csv、txt等)。
需要面临问题:
1.异常中断重启恢复
2.处理过程中的各种统计如:成功数、失败数等
使用spring batch 用户只需要专注读取数据加工过滤数据和处理业务数据
Spring Batch提供了大量的,可重用的功能,这些功能对大数据处理来说是必不可少的,包括 日志/跟踪(tracing),事务管理, 任务处理(processing)统计,任务重启, 忽略(skip),和资源管理等功能。 此外还提供了许多高级服务和特性, 使之能够通过优化(optimization ) 和分片技术(partitioning techniques)来高效地执行超大型数据集的批处理任务。
Spring Batch结构
JobLauncher
job的容器,负责启动job,以及job的元数据管理
job
Step的容器负责调度Step执行,将执行结果反馈给Job
Step
真正的任务处项,一个job可以有多个Step
ItemReader
读取数据,可以是xml、excel、txt、mysql等,spring batch 很多基本的spring batch都有默认实现,具体可以看此接口的实现
ItemProcess
根据itemReader读取的数据做加工和过滤处理如VO互转 如果过滤返回null就行
ItemWrlter
将itemProcess加工的数据做写入操作,可以是xml、excel、txt、mysql等,spring batch 很多基本的spring batch都有默认实现,具体可以看此接口的实现
JobRepository
负责job在启动、调度 、读取、写入过程中信息存储,如执行时间,结果、成功数量 失败数量、等。可以是数据库、redis、h2等 spring batch默认提供的是数据库
看了上图我们真正只需要关心 ItemReader,ItemProcess,ItemWrlter 也就是 读取 加工和 写入,其他都是spring batch调度
spring batch元数据
元数据可以任意一种格式存在,就看jobRepository实现 我这里展示最常用的数据库记录元数据的相关表