batch执行流程 spring_跑批利器--SpringBatch框架

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是如何跟外部系统进行交互的,先看一下下图.

AAffA0nNPuCLAAAAAElFTkSuQmCC

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

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

Batch 和外界的介入点.

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

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

作者:架构师springboot

链接:https://www.jianshu.com/p/adc5b88b8f26

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值