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批处理框架操作指南
# 多个
# 分页
# 复用
# 自己的
# 重启
# 执行器
# 较好
# 自定义
# 中对
# 跳过
# 发送邮件
# 重试
# 应用层
# 就会
# 都有
# 在这
# 是由
# 数据管理
# 数据处理
相关文章:
招商网站制作流程,网站招商广告语?
建站之星北京办公室:智能建站系统与小程序生成方案解析
小型网站建站如何选择虚拟主机?
开心动漫网站制作软件下载,十分开心动画为何停播?
如何在云主机快速搭建网站站点?
小程序网站制作需要准备什么资料,如何制作小程序?
建站主机是否等同于虚拟主机?
建站之星IIS配置教程:代码生成技巧与站点搭建指南
沈阳制作网站公司排名,沈阳装饰协会官方网站?
如何快速查询网站的真实建站时间?
昆明网站制作哪家好,昆明公租房申请网上登录入口?
如何登录建站主机?访问步骤全解析
做企业网站制作流程,企业网站制作基本流程有哪些?
公司网站设计制作厂家,怎么创建自己的一个网站?
西安市网站制作公司,哪个相亲网站比较好?西安比较好的相亲网站?
建站之星2.7模板:企业网站建设与h5定制设计专题
齐河建站公司:营销型网站建设与SEO优化双核驱动策略
网站制作和推广的区别,想自己建立一个网站做推广,有什么快捷方法马上做好一个网站?
,怎么用自己头像做动态表情包?
外汇网站制作流程,如何在工商银行网站上做外汇买卖?
c# await 一个已经完成的Task会发生什么
大型企业网站制作流程,做网站需要注册公司吗?
如何撰写建站申请书?关键要点有哪些?
韩国代理服务器如何选?解析IP设置技巧与跨境访问优化指南
C++中的Pimpl idiom是什么,有什么好处?(隐藏实现)
如何配置IIS站点权限与局域网访问?
如何在万网开始建站?分步指南解析
如何在万网自助建站平台快速创建网站?
潮流网站制作头像软件下载,适合母子的网名有哪些?
音乐网站服务器如何优化API响应速度?
如何通过虚拟主机快速完成网站搭建?
如何在宝塔面板中修改默认建站目录?
微信网站制作公司有哪些,民生银行办理公司开户怎么在微信网页上查询进度?
香港服务器选型指南:免备案配置与高效建站方案解析
如何快速搭建高效服务器建站系统?
上海网站制作网页,上海本地的生活网站有哪些?最好包括生活的各个方面的?
如何快速上传建站程序避免常见错误?
建站之星体验版:智能建站系统+响应式设计,多端适配快速建站
如何优化Golang Web性能_Golang HTTP服务器性能提升方法
定制建站模板如何实现SEO优化与智能系统配置?18字教程
c++怎么实现高并发下的无锁队列_c++ std::atomic原子变量与CAS操作【详解】
Android自定义listview布局实现上拉加载下拉刷新功能
如何生成腾讯云建站专用兑换码?
网页设计网站制作软件,microsoft office哪个可以创建网页?
如何彻底删除建站之星生成的Banner?
如何快速生成ASP一键建站模板并优化安全性?
如何通过建站之星自助学习解决操作问题?
最好的网站制作公司,网购哪个网站口碑最好,推荐几个?谢谢?
专业制作网站的公司哪家好,建立一个公司网站的费用.有哪些部分,分别要多少钱?
*请认真填写需求信息,我们会在24小时内与您取得联系。