继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

跑批利器--SpringBatch框架

幕布斯6054654
关注TA
已关注
手记 1258
粉丝 219
获赞 1011

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


webp

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

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

Batch 和外界的介入点.

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

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



作者:架构师springboot
链接:https://www.jianshu.com/p/adc5b88b8f26


打开App,阅读手记
1人推荐
发表评论
随时随地看视频慕课网APP