spring batch框架的简介

批处理任务是大多数IT项目的一个重要组成部分,批处理在业务系统中负责处理海量的数据,无须人工干预就能够自动高效的进行复杂的数据分析和处理。批处理会定期读入批量数据,经过相应的业务处理进行归档的业务操作,批处理的特征是自动执行,处理的数据量大,定时执行。将整个批处理的流程按逻辑划分可以分为读数据,处理数据和写数据。
spring batch对批处理本身的特性进行了抽象,将批处理作业抽象为job和job step,将批处理的处理过程分解为数据读,数据处理和数据写。
将异常处理机制分为跳过,重启和重试。将作业的分区分为多线程,并行远程和分区。
spring batch不是一个调度框架,但需要调度框架来配合完成批处理任务,它只关注批处理相关的任务问题,但没有提供相应的调度功能,如果需要使用调度功能,需要使用调度框架,这里介绍一个比较常用的调度框架quartz,可以配合spring batch完成批处理的任务调度。
spring batch的架构分为三层:基础架构层,核心层和应用层。应用层包含所有的批处理作业,核心层主要提供JobLauncher、Job和step,基础架构层主要提供通用的读(ItemReader)、写(ItemWriter)和服务处理(如:RetryTemplate重试模板;RepeatTemplate:重复模板),Spring
batch的三层架构体系使得Spring batch框架可以在不同的层级进行扩展,避免不同层级之间的相互影响。
job的介绍
批处理的作业是由一组step组成,同时job本身也是配置文件的顶级元素。每个作业都有自己的名字,可以定义step的执行顺序,以及定义作业是否可以重启。job执行的时候会生成一个job instance(作业实例)和一个job execution(作业执行器)。job instance包含执行job期间产生的数据以及job执行的状态信息;1个job可以对应多个job instance,1个job instance可以对应多个job execution。
job的配置的主要属性有id(作业的唯一标识)、job-repository(定义作业仓库)、incrementer(作业参数递增器)、restartable(作业是否重启)、parent(指定该作业的父作业)、abstract(定义作业是否抽象)。
step的介绍
step表示作业中一个完整的步骤,一个job可以由一个或者多个step组成,step主要负责批处理运行过程中的主要业务逻辑的实现。每次step执行的时候会生成一个或者多个job execution,每次任务执行失败的时候,等到下次重新执行该任务的时候就会为该任务的step重新生成一个step execution。
step可以配置tasklet、partition、job、flow。
step一般主要配置itemReader、itemProcess和itemWriter来完成批处理的业务逻辑处理。
job repository的介绍
job repository主要用来存储job运行期间的元数据(这些元数据包括job instance、job execution、job parameters、step execution、execution context等数据)。
spring batch框架进行元数据管理的时候共有9张表,其中有3张表(后缀是SEQ)用来分配主键的,这9张表分别是
BATCH_JOB_INSTANCE:作业实例表
BATCH_JOB_EXECUTION:作业执行器表
BATCH_JOB_EXECUTION_PARAMS:作业参数表
BATCH_STEP_EXECUTION:作业步执行器表
BATCH_JOB_EXECUTION_CONTEXT:作业执行上下文表
BATCH_STEP_EXECUTION_CONTEXT:作业步执行上下文表
BATCH_JOB_EXECUTION_SEQ:作业执行器序列表
BATCH_STEP_EXECUTION_SEQ:作业步序列表
BATCH_JOB_SEQ:作业序列表
itemReader的介绍
itemReader是Step中对资源的读处理,Spring batch框架提供了大量的直接可用的读组件可以快速的完成批处理应用的开发和构建,同时框架也提供了较好的复用和扩展组件,开发者可以自定义实现。
ListItemReader:读取List数据,只能读一次。
ItemReaderAdapter:ItemReader适配器,可以复用现有的读操作。
FlatFileItemReader:读Flat类型文件。
StaxEventItemReader:读XML类型文件。
JdbcCursorItemReader:基于JDBC游标方式读数据库。
HibernateCursorItemReader:基于hibernate游标方式读取数据库。
StoredProcedureItemReader:基于存储过程读取数据库。
IbatisPagingItemReader:基于Ibatis分页读取数据库。
JpaPagingItemReader:基于jpa方式分页读取数据库。
JdbcPagingItemReader:基于jdbc方式分页读取数据库。
HibernatePagingItemReader:基于Hibernate方式分页读取数据库。
JmsItemReader:读取jms队列。
IteratorItemReader:迭代方式的读组件。
MultiResourceItemReader:多文件读取组件。
MongoItemReader:基于分布式存储MongoDB读组件。
Neo4jItemReader:面向网格数据库Neo4j读组件。
ResourcesItemReader:基于批量资源的读组件。
AmqpItemReader:读取AMQP队列组件。
RepositoryItemReader:基于Spring Data的读组件。
itemProcess的介绍
itemProcess阶段表示对读取数据进行处理,开发者可以在这里面实现自己的业务操作。
CompositeItemProcessor:组合处理器,可以封装多个业务处理服务。
ItemProcessorAdapter:适配器,可以复用现有的业务处理服务。
PassThroughItemProcessor:不做业务处理,直接返回读取数据。
ValidatingItemProcessor:数据校验处理器,支持对数据的校验,如果校验不通过可以进行过滤或者跳过skip的方式来处理记录。
itemWriter的介绍
itemWriter是step中对资源的写处理,Spring batch框架提供了大量的直接可用的写组件可以快速的完成批处理应用的开发和构建,同时框架也提供了较好的复用和扩展组件,开发者可以自定义实现。
FlatFileItemWriter:写flat类型文件。
MultiResourceItemWriter:多文件写组件。
StaxEventItemWriter:写XML类型文件。
AmqpItemWriter:写AMQP类型消息。
ClassifierCompositeItemWriter:根据Classifier路由不同的Item到特定的ItemWriter处理。
HibernateItemWriter:基于Hibernate方式写数据库。
IbatisBatchItemWriter:基于Ibatis方式写数据库。
ItemWriterAdapter:适配器,可以复用现有的写服务。
JdbcBatchItemWriter:基于JDBC方式写数据库。
JmsItemWriter:写JMS队列。
JpaItemWriter:基于jpa方式写数据库。
GemfireItemWriter:基于分布式数据库Gemfire的写组件。
SpELMappingGemfireItemWriter:基于spring表达式语言写分布式数据库Gemfire的组件。
MimeMessageItemWriter:发送邮件的写组件。
MongoItemWriter:基于分布式文件存储数据库MongoDB写组件。
Neo4jItemWriter:面向网络数据库Neo4j的读组件。
PropertyExtractingDelegatingItemWriter:属性抽取代理写组件。
RepositoryItemWriter:基于Spring Data的写组件。
SimpleMailMessageItemWriter:发送邮件的写组件。
CompositeItemWriter:条目写的组合模式,支持组装多个ItemWriter。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持!
# spring
# batch
# 批处理
# batch批处理
# Spring Batch轻量级批处理框架实战
# 详解批处理框架之Spring Batch
# Java中批处理框架spring batch详细介绍
# Spring Batch批处理框架使用解析
# 详解Spring Batch 轻量级批处理框架实践
# Spring Batch批处理框架操作指南
# 多个
# 分页
# 复用
# 自己的
# 重启
# 执行器
# 较好
# 自定义
# 中对
# 跳过
# 发送邮件
# 重试
# 应用层
# 就会
# 都有
# 在这
# 是由
# 数据管理
# 数据处理
相关文章:
招贴海报怎么做,什么是海报招贴?
网站制作培训多少钱一个月,网站优化seo培训课程有哪些?
东莞专业网站制作公司有哪些,东莞招聘网站哪个好?
韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐
制作电商网页,电商供应链怎么做?
个人摄影网站制作流程,摄影爱好者都去什么网站?
东莞专业制作网站的公司,东莞大学生网的网址是什么?
定制建站如何定义?其核心优势是什么?
宝塔面板如何快速创建新站点?
如何通过西部建站助手安装IIS服务器?
建站之星各版本价格是多少?
怎么将XML数据可视化 D3.js加载XML
如何配置FTP站点权限与安全设置?
教学论文网站制作软件有哪些,写论文用什么软件
?
北京网站制作公司哪家好一点,北京租房网站有哪些?
建站之星导航如何优化提升用户体验?
建站之星伪静态规则如何正确配置?
正规网站制作公司有哪些,目前国内哪家网页网站制作设计公司比较专业靠谱?口碑好?
建站VPS选购需注意哪些关键参数?
如何选择CMS系统实现快速建站与SEO优化?
h5在线制作网站电脑版下载,h5网页制作软件?
网页设计网站制作软件,microsoft office哪个可以创建网页?
网站制作难吗安全吗,做一个网站需要多久时间?
高端网站建设与定制开发一站式解决方案 中企动力
北京专业网站制作设计师招聘,北京白云观官方网站?
高防服务器如何保障网站安全无虞?
高性价比服务器租赁——企业级配置与24小时运维服务
建站之星后台管理如何实现高效配置?
建站主机数据库如何配置才能提升网站性能?
C#怎么使用委托和事件 C# delegate与event编程方法
我的世界制作壁纸网站下载,手机怎么换我的世界壁纸?
网站制作模板下载什么软件,ppt模板免费下载网站?
网站视频制作书签怎么做,ie浏览器怎么将网站固定在书签工具栏?
建站之星官网登录失败?如何快速解决?
标准网站视频模板制作软件,现在有哪个网站的视频编辑素材最齐全的,背景音乐、音效等?
建站之星24小时客服电话如何获取?
微课制作网站有哪些,微课网怎么进?
建站之星如何取消后台验证码生成?
如何通过.red域名打造高辨识度品牌网站?
如何快速上传自定义模板至建站之星?
如何在Tomcat中配置并部署网站项目?
网站建设制作需要多少钱费用,自己做一个网站要多少钱,模板一般多少钱?
如何选择高效响应式自助建站源码系统?
Swift中switch语句区间和元组模式匹配
网站设计制作企业有哪些,抖音官网主页怎么设置?
制作网站的软件免费下载,免费制作app哪个平台好?
TestNG的testng.xml配置文件怎么写
宝塔建站无法访问?如何排查配置与端口问题?
手机怎么制作网站教程步骤,手机怎么做自己的网页链接?
视频网站app制作软件,有什么好的视频聊天网站或者软件?
*请认真填写需求信息,我们会在24小时内与您取得联系。