Spring Batch的框架包括启动批处理作业的组件和存储Job执行产生的元数据。如果你作为一个批处理应用程序的开发人员,你暂时没有必要跟这些组件打交道,因为它们主要为我们提供组件支持的角色,但是您需要配置这个基础框架在你的批处理应用程序中。

  启动Jobs并存储Job元数据.

Spring Batch框架本身还是比较复杂的,但是我们开始接触它的时候主要是处理两个组件:Job Launcher和Job Repository.这两个概念对应着的java接口分别是:JobLauncher和 JobRepository.

JobLauncher

对于Spring Batch这个框架里的小世界而言.JobLauncher是连接它跟外面世界的一个入口,具体SpringBatch如何跟外界进行交互,文章结尾会进行简单的说明.相对而言JobLauncher接口还是比较简单的,如下:

packageorg.springframework.batch.core.launch;

(...)

publicinterface JobLauncher {

publicJobExecution run(Job job, JobParameters jobParameters)

throwsJobExecutionAlreadyRunningException,

JobRestartException,JobInstanceAlreadyCompleteException,

JobParametersInvalidException;

}

JobLauncher接口接受两个参数:Job和JobParameters.那么谁来调用这个Job Launcher呢?当然,我们首先可以通过java程序来通过JobLauncher来启动,也可以通过定时任务例如Quartz scheduler来启动.

JobRepository

JobRepository保持着所有Job执行的相关元数据,JobRepository的java接口如下:

packageorg.springframework.batch.core.repository;

(...)

publicinterface JobRepository {

booleanisJobInstanceExists(String jobName, JobParameters jobParameters);

JobExecutioncreateJobExecution(

StringjobName, JobParameters jobParameters)

throwsJobExecutionAlreadyRunningException, JobRestartException,

JobInstanceAlreadyCompleteException;

voidupdate(JobExecution jobExecution);

voidadd(StepExecution stepExecution);

voidupdate(StepExecution stepExecution);

voidupdateExecutionContext(StepExecution stepExecution);

voidupdateExecutionContext(JobExecution jobExecution);

StepExecutiongetLastStepExecution(JobInstance jobInstance,

StringstepName);

intgetStepExecutionCount(JobInstance jobInstance, String stepName);

JobExecutiongetLastJobExecution(String jobName,

JobParametersjobParameters);

}

JobResponseitory 接口提供所有的服务来管理批量任务的生命周期,包括创建,更新等等.一般而言job启动器会把job的创建任务委托给Job Repository来做,同时job也会在它执行的过程中来让Job Repository存储它当然的状态.

下面我们来看看Spring Batch 是如何跟外部系统进行交互的,先看一下下图.

一个批量应用程序并不是一个孤岛,它也需要跟外面的世界比如一些企业项目进行交互,上图基本上涵盖了它的交互内容.

一个job的启动通常是一个事件来进行触发的,我们会经常用到JobLauncher接口和JobParameters类,但是这个事件是可以来自任何地方的,例如一个系统的定时器;一个http请求到web控制器来启动job等这就是Spring Batch 和外界的介入点.

另外批量Job程序基本上都是用来处理各种数据的,所以上图中我们可以看到SpringBatch的出口都是在跟数据源进行打交道,这些数据源可以是任何类型,但是文件系统和数据库是最常用的,当然它也可以支持写消息给JMS.

到目前为止我们已经了解SpringBatch的核心组件以及他们如何跟外部世界进行交互.

跑批利器--SpringBatch框架相关推荐

  1. 跑批利器--读取文件

    在上篇文章中已经对示例的基本业务和流程进行了解,同时也知道了SpringBatch的三个接口ItemReader,ItemProcessor,ItemWriter.接下来我们主要是通过示例来具体处理一 ...

  2. 微服务设计指导-使用云原生微服务解决传统海量跑批时引起的系统间“级联雪崩”以及效率

    问题描述 这也是一起真实的生产事故,如下图所示 这种"雪崩"是属于企业内部系统雪崩. 我们都知道如果是在外部http (包括一切restful.soap请求.http类型调用)调用 ...

  3. 金融任务实例实时、离线跑批,Apache DolphinScheduler 在新网银行的三大应用场景与五大优化...

    在新网银行,每天都有大量的任务实例产生,其中实时任务占据多数.为了更好地处理任务实例,新网银行在综合考虑之后,选择使用 Apache DolphinScheduler 来完成这项挑战.如今,新网银行多 ...

  4. 查询慢 跑批慢 性能低怎么办? | 润乾高性能计算专家

    完整资料下载: 查询慢.跑批慢.性能低怎么办?| 润乾高性能计算专家

  5. elasticJob分片跑批

    2019独角兽企业重金招聘Python工程师标准>>> 业务迅速发展带来了跑批数据量的急剧增加.单机处理跑批数据已不能满足需要,另考虑到企业处理数据的扩展能力,多机跑批势在必行.多机 ...

  6. tidb 企业_TiDB 在马上消费金融核心账务系统归档及跑批业务下的实践

    作者介绍: 康文权,马上消费金融总账高级研发工程师. 李银龙,原腾讯云运维工程师,马上消费金融容器云 TiDB 负责人,西南区 TUG Leader. 背景介绍 马上消费金融于 2015 年 6 月营 ...

  7. java跑批任务_【spring配置】——spring整合Quartz定时器

    第一种:为普通java类中的某个方法配置跑批任务MethodInvokingJobDetailFactoryBean CronTriggerBean SchedulerFactoryBean 1.定义 ...

  8. 【中亦安图】清算/报表/日终跑批程序之性能优化案例(5)

    第一章 技术人生系列 · 我和数据中心的故事(第五期)-清算/报表/日终跑批程序之性能优化案例(一) 中亦安图 | 2016-02-18 21:40 前言 不知不觉,技术人生系列·我和数据中心的故事来 ...

  9. 视频教程-Web前端开发利器 SPRY框架之表单验证-JavaScript

    Web前端开发利器 SPRY框架之表单验证 有17年互联网行业从业经验,始终在教学第一线,勇于创新,从有效教学,不断向高效教学转变.始终坚持"学生为主体,教师为主导:商业化案例,企业化情境& ...

最新文章

  1. CSP 201909-2 小明种苹果(续)Python实现+详解
  2. [USACO1.3]混合牛奶 Mixing Milk
  3. html标记什么规定applet,HTML applet 标签
  4. java循坏_Java的坏功能是什么
  5. python实例方法、静态方法和类方法
  6. you need to resolve your current index first 解决办法
  7. Algs4-1.2.8引用型变量赋值-数组复制
  8. 2022考研计算机-数据库原理教程1-7章
  9. 小米官网服务器维修无法刷机,小米手机无法刷机的解决方法
  10. as模拟器配置编译的Android,android studio连接雷电模拟器 【AS 模拟器】
  11. mysql多进程模块型_mysql mysqld_multi 单机多进程
  12. 如何进行容器镜像加速?| 深度揭示阿里云 Serverless Kubernetes(3)
  13. [白话解析] 深入浅出极大似然估计 极大后验概率估计
  14. Revit二开之管道翻弯
  15. Java+阿里云手机验证码发送和验证
  16. Oracle数据库(三)可插拔数据库使用
  17. 《JS学习》Object对象
  18. python-正负数交叉排序
  19. iOS开发之 简易随机点名册的设计
  20. YTU 3086 紧急补习!

热门文章

  1. 【若泽大数据001】Linux基础知识汇总
  2. java基础巩固-宇宙第一AiYWM:为了维持生计,Spring全家桶_Part1-1(Spring左膀右臂中的左膀IOC第一篇~全是概念,Spring为啥辣么6)~整起
  3. 计算机PAD网络是什么,iPad平板电脑的WLAN与Cellular版有什么区别【详细介绍】
  4. 少壮不努力 老大徒伤悲
  5. STM32内部flash详解(1)
  6. IDEA + github pull request + teamcity运用
  7. 快来学selenium初阶到高阶的使用,反爬的案例解析,google驱动的安装配置
  8. 2020年中国化学发光行业发展现状、竞争格局及未来发展趋势分析,市场规模爆发式增长,成为体外诊断中的“主力军”「图」
  9. 为什么PHP项目运行报错502,Nginx + php-fpm 出现502错误分析
  10. 用C语言实现读心术程序设计,无聊的时候写的读心术小程序