zoukankan      html  css  js  c++  java
  • SpringBatch的核心组件JobLauncher和JobRepository

    Spring Batch的框架包括启动批处理作业的组件和存储Job执行产生的元数据。因此只需掌握配置这个基础框架在批处理应用程序中即启动Jobs并存储Job元数据.

    组件:Job Launcher和Job Repository.
    对应着的Java接口分别是:JobLauncher和 JobRepository.

    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.


    —–下面有个“顶”字,你懂得O(∩_∩)O哈哈~
    —–乐于分享,共同进步!
    —–更多文章请看:http://blog.csdn.net/duruiqi_fx


  • 相关阅读:
    (五)表单类的创建和使用
    (四)注册登录--重用Django
    (三)Django模板语言
    (二)Django模板的应用
    (一)Django项目架构介绍
    SOA测试之浏览器插件
    (2) Tomcat启动Jenkins
    (1) Jenkins + Subversion + Maven + TestNG
    [翻译] API测试最佳实践
    [原创] 算法之递归(4)- 应用
  • 原文地址:https://www.cnblogs.com/hainange/p/6153785.html
Copyright © 2011-2022 走看看