`
rockie.yung
  • 浏览: 53117 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Spring Batch 2. 行话

阅读更多

 

每一个行业都有自己的行话,SpringBatch也不例外。

 

Job

一个Job是用于封装一整个批处理的实体。和其它Spring项目一样,一个Job和一个XML配置文件相连。这个文件可能叫任务配置。无论如何,Job是整个层次结构的顶点。

 

一个Job就是一系列Step的容器。Job可以定义一些属性,如是否可以重新执行。Step会使用Job定义的属性。

 

Job的定义包含下面几个部分
• 一个简单的名字
• 一系列步骤
• 是否支持重新执行

 

SpringBatch提供一个基本的实现SimpleJob。可以用下面方式配置一个Job

<job id="footballJob">
    <step id="playerload" next="gameLoad"/>
    <step id="gameLoad" next="playerSummarization"/>
    <step id="playerSummarization"/>
</job>

 

JobInstance

一个JobInstance就是一个Job的实例。一个Job的每次受调度都会产生一个JobInstance。假如我们配置一个每天都运行的任务。那么每天都会有一个JobInstance产生。1月1号会有一个JobInstance,1月2号会有一个。如果1月1号的那个JobInstance执行失败,再执行一次并不会新产生一个JobInstance,还是1月1号的那个JobInstance。


一个JobInstance不和任何数据绑定。JobInstance只保存状态,如何加载数据完全由ItemReader的实现决定。

 

 

JobParameters


JobParameters用于区分JobInstance。一个JobParameters是在开始一个Job时的一组参数。

在上图的例子中,有两个JobInstance,1月1号和1月2号。但是它们属于同一个Job,所以我们可以说JobInstance = Job + JobParameters。

 

JobExecution


一个JobExecution就是一次真正意义上一次Job的执行。一个JobInsntace可以有多个JobExecution,一个JobExecution的失败并不意味这个JobInstance失败。

 

一个Job定义这个Job该如何执行。JobInstnace用于将一系列的JobExecution组织起来。JobExecution会将本次执行的状态记录下来。

 

JobExecution有如下属性:

  • status:本次执行的状态,可以是BatchStatus.STARTED、BatchStatus.FAILED、BatchStatus.COMPLETED等
  • startTime:JobExecution执行开始时间
  • endTime:JobExecution执行的结束时间
  • exitStatus:JobExecution执行的结果
  • createTime:JobExecution的生成时间。如果还没有开始执行那么就没有startTime,但是createTime始终是有的。
  • lastUpdated:最后更新时间
  • executionContext:一个容器,用于执行时需要保存的用户数据。
  • failureExceptions:执行时碰到的异常列表。有多个异常的导致失败时会有用。

 

Step


每个Job包含一个或多个Step。一个Step包含实际执行需要的信息。一个Step可以很简单也业很复杂。一个简单的Step可能不需要代码或只要写一点点代码,如把数据从文件加载到数据库中。和Job一样,一个Step也有StepExecution的概念。如下图所示,Job由Step组成,JobExecution由StepExecution组成。

StepExecution


StepExecution表示一个Step的执行。 StepExecution只有在真正开始时才会生成,而不是JobExecution开始时就生成所有的StepExecution。StepExecution有对应的Step(可能只是名字?)和JobExecution的引用,以及和事务相关的数据。它还有一个ExecutionContext,用于保存用户数据。

 

StepExecution有下面的一系列属性。

 

  • status:本次执行的状态,可以是BatchStatus.STARTED、BatchStatus.FAILED、BatchStatus.COMPLETED等
  • startTime:JobExecution执行开始时间
  • endTime:JobExecution执行的结束时间
  • exitStatus:JobExecution执行的结果
  • createTime:JobExecution的生成时间。如果还没有开始执行那么就没有startTime,但是createTime始终是有的。
  • executionContext:一个容器,用于执行时需要保存的用户数据。
  • failureExceptions:执行时碰到的异常列表。有多个异常的导致失败时会有用。
  • readCount:有少条记录已经成功的读了。
  • writeCount:有少条记录已经成功的写了。
  • commitCount:已经提交了多少次事务了。
  • rollbackCount:和Step相关的事物被回滚了多少次。
  • readSkipCount:读跳过了多少次。resulting in a skipped item.?
  • processSkipCount:处理跳过了多少次。resulting in a skipped item.
  • filterCount:用ItemProcessor跳过了多少条记录。
  • writeSkipCount:写跳过了多少次。resulting in a skipped item.?

ExecutionContext

ExecutionContext是一系列的键/值对,由框架控制保存。它允许用户保存StepExecution或JobExecution的状态信息。ExecutionContext和Quartz的JobDataMap非常类似。使用ExecutionContext的最佳例子就是重试的辅助。以读取文本文件为例,处理时可以将处理到哪一行记录到ExecutionContext中,框架会把这些信息在检入点永久保持起来。当失败时可以从上次失败的那个点开始重新运行。

 

 

JobRepository


JobRepository是上面所有东西的存储机制。它为JobLauncher、Job和Step的实现提供了CRUD操作。当一个Job开始运行时,从JobRepository获取一个JobExecution。在执行阶段StepExecution和JobExecution会保存到JobRepository中。

 

JobLauncher

JobLauncher用于从JobRepository获取JobExecution和执行该JobExecution。接口定义如下。

public interface JobLauncher {
    public JobExecution run(Job job, JobParameters jobParameters)
        throws JobExecutionAlreadyRunningException, JobRestartException;
    }
}

ItemReader

ItemReader用于抽象Step的输入。当所有输入读完后返回null。

 

ItemWriter


ItemWriter用于抽象Step的输出,每次一条记录。通常来说,ItemWriter并不知道下一条要处理什么,它只有当前的那条记录。

 

ItemProcessor

 

ItemProcessor用于抽象一条记录的处理。ItemReader用于读一条记录,ItemWriter用于写一条记录,ItemProcessor用于应用业务逻辑,从一种格式到另一种格式。在处理过程中,返回null表示这条记录不需要写下来。

 

分享到:
评论

相关推荐

    The Definitive Guide to Spring Batch, 2nd Edition.epub

    Additionally, you’ll discover how Spring Batch 4 takes advantage of Java 9, Spring Framework 5, and the new Spring Boot 2 micro-framework. After reading this book, you’ll be able to use Spring Boot ...

    Tutorialspoint Spring Batch 教程.epub

    Tutorialspoint Spring Batch 教程.epub

    Manning.Spring.Batch.in.Action.Oct.2011

    Manning.Spring.Batch.in.Action.Oct.2011 -- 英文

    Spring-batch简介.pdf

    Spring-batch简介.pdf Spring-batch简介.pdf Spring-batch简介.pdf

    Spring-batch Demo.zip

    Spring-batch Demo.zip Spring-batch Demo.zip Spring-batch Demo.zip

    Spring batch 2.1.jar

    spring-batch-2.1.zip 压缩包,包含所有需要的架包,方便好用需要重新下载。

    Maning.Spring.Batch.in.Action.2012

    Maning.Spring.Batch.in.Action.2012

    Spring.Batch.in.Action.pdf

    讲解Spring Batch的书,很详细的哦。

    spring-batch.jar

    批处理文件 spring-batch 所需要的jar包

    SpringBatch.jar

    SpringBatch.jar

    spring batch in action

    Spring Batch in Action is a comprehensive, in-depth guide to writing batch applications using Spring Batch. Written for developers who have basic knowledge of Java and the Spring lightweight ...

    Spring Batch API(Spring Batch 开发文档).CHM

    Spring Batch API(Spring Batch 开发文档).CHM。 官网 Spring Batch API,Spring Batch 开发文档

    Pro.Spring.Batch.Jul.2011

    Table of Contents * Batch and Spring * Spring Batch 101 * Sample Job * Understanding Jobs and Steps * Job Repository and Metadata * Running a Job * Readers * Item Processors * Item Writers * Sample ...

    spring-batch包

    spring-batch4.0.0 batch spring-batch集成 spring-batch.jar

    Spring.Batch批处理框架

    Spring Batch是Spring的一个子项目,使用Java语言并基于Spring框架为基础开发,使得已经使用 Spring 框架的开发者或者企业更容易访问和利用企业服务。 Spring Batch 提供了大量可重用的组件,包括了日志、追踪、事务、...

    SpringBoot+Batch实现

    spring batch官方文档:https://docs.spring.io/spring-batch spring batch3.x中文文档:http://www.kailing.pub/SpringBatchReference spring batch官方入门实例:https://projects.spring.io/spring-batch/ 简单...

    Spring攻略(第三版)源代码

    2. Spring Core Tasks 3. Spring Annotation Driven Core Tasks 4. Spring @MVC 5. Spring REST 6. Spring Deployment to the Cloud 7. Spring Social 8. Spring Security 9. Spring Mobile 10. Spring with other ...

    spring-batch-3.0.5.RELEASE-dist.zip

    spring batch 3.0.5,官方下载包。

    Spring_Batch_Reference开发参考文档.pdf

    Spring Batch为Spring生态圈中一个轻量级、完善的批处理框架。是使用Java语言基于Spring框架为基础开发的。 Spring Batch提供了大量可以即开即用的组件。对于大数据量和高性能的批量处理任务也提供了包括分区功能、...

    spring_batch.zip

    spring boot整合mybatis plus 集成 starter多数据源 数据源加载在基于DataProperteis的基础上配置了 master slave, 将它们配置成map,map中是多个数据源的主键和数据源属性的映射; 因此, 再通过线程隔离 ...

Global site tag (gtag.js) - Google Analytics