为了账号安全,请及时绑定邮箱和手机立即绑定

跑批利器--SpringBatch框架

标签:
SpringBoot

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


点击查看更多内容
1人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消