文档章节

Spring Batch功能轮廓

伟丶
 伟丶
发布于 2017/06/01 09:52
字数 675
阅读 168
收藏 0
点赞 1
评论 0

spring batch 版本:3.0.7  环境:JDK1.6+

spring Batch 与 quartz 区别:

  spring Batch:任务配置调度平台,通过手动调度。基本所有功能是通过Spring xml配置实现,API待调研。配置比较复杂。但实现功能多。

  quartz:任务自动调度平台,通过cron表达式控制调度时间。

两种东西的面向对象不同,可结合使用,实现定时批量调度

 

 spring Batch现有支持:

    1、多数据库

       数据库语句存在spring-batch-core.jar内

    2、任务可按定义step顺序执行

<job  id = “footballJob” > 
    <step  id = “playerload”           parent = “s1”  next = “gameLoad” /> 
    <step  id = “gameLoad”             parent = “s2”  next = “playerSummarization” /> 
    <step  id = “playerSummarization”  parent = “s3” /> 
</ job>

    3、任务执行时,可根据当前任务执行状态判断继续执行哪个任务

<job id="job">
    <step id="stepA" parent="s1">
        <next on="*" to="stepB" />
        <next on="FAILED" to="stepC" />
    </step>
    <step id="stepB" parent="s2" next="stepC" />
    <step id="stepC" parent="s3" />
</job>

    4、自定义事物管理,与spring相同

<job id="sampleJob" job-repository="jobRepository">
    <step id="step1">
        <tasklet transaction-manager="transactionManager">
            <chunk reader="itemReader" writer="itemWriter" commit-interval="10"/>

        </tasklet>
    </step>
</job>

    事物传播机制定义 Spring: 5.1.8 Transaction Attributes

<step  id = “step1” > 
    <tasklet> 
        <chunk  reader = “itemReader”  writer = “itemWriter”  commit-interval = “2” /> 
        <transaction-attributes  isolation = “DEFAULT” 
                                propagation = “REQUIRED” 
                                timeout = “30 “ /> 
    </ tasklet> 
</ step>

5、当任务状态改变时(开始、完成等),可配置执行不同监听

<step id="step1">
    <tasklet>
        <chunk reader="reader" writer="writer" commit-interval="10"/>
        <listeners>
            <listener ref="chunkListener"/>
        </listeners>
    </tasklet>
</step>

    监听可配置与父任务合并种类   Spring:4.1.3 Inheriting from a Parent Job

<job  id = “baseJob”  abstract = “true” > 
    <listeners> 
        <listener  ref = “listenerOne” /> 
    <listeners> 
</ job>

<job  id = “  job1 ” parent = “baseJob” > 
    <step  id = “step1”  parent = “standaloneStep” />

    <listeners  merge = “true” > 
        <listener  ref = “listenerTwo” /> 
    <listeners> 
</ job>

6、任务重试次数和重试时每个step是否运行 Spring:5.1.4 Configuring a Step for Restart

<job id="footballJob" restartable="true">
    <step id="playerload" next="gameLoad">
        <tasklet>
            <chunk reader="playerFileItemReader" writer="playerWriter"
                   commit-interval="10" />
        </tasklet>
    </step>
    <step id="gameLoad" next="playerSummarization">
        <tasklet allow-start-if-complete="true">
            <chunk reader="gameFileItemReader" writer="gameWriter"
                   commit-interval="10"/>
        </tasklet>
    </step>
    <step id="playerSummarization">
        <tasklet start-limit="3">
            <chunk reader="playerSummarizationSource" writer="summaryWriter"
                   commit-interval="10"/>
        </tasklet>
    </step>
</job>

7、自定义异常过滤,可配置发生各种异常时是否回滚和忽视某些异常 Spring :5.1.7 Controlling Rollback

    异常不回滚:

<step id="step1">
   <tasklet>
      <chunk reader="itemReader" writer="itemWriter" commit-interval="2"/>
      <no-rollback-exception-classes>
         <include class="org.springframework.batch.item.validator.ValidationException"/>
      </no-rollback-exception-classes>
   </tasklet>
</step>

    跳过异常:

<step  id = “step1” > 
    <tasklet> 
        <chunk  reader = “flatFileItemReader”  writer = “itemWriter” 
               commit-interval = “10”  skip-limit =“10” >
             <skippable-exception-classes> 
                <include class = java.lang.Exception“/> 
                <exclude class =”java.io.FileNotFoundException“/> 
            </ skippable-exception-classes>
         </ chunk> 
    </ tasklet> 
</ step>

    重试异常:

<step  id = “step1” > 
   <tasklet> 
      <chunk  reader = “itemReader”  writer = “itemWriter” 
             commit-interval = “2”  retry-limit =“3” >
          <retryable-exception-classes> 
            <include class = org.springframework.dao.DeadlockLoserDataAccessException“/> 
         </ retryable-exception-classes>
       </ chunk> 
   </ tasklet> 
</ step>

8、step并流执行 Spring : 5.3.5 Split Flows

<split id="split1" next="step4">
    <flow>
        <step id="step1" parent="s1" next="step2"/>
        <step id="step2" parent="s2"/>
    </flow>
    <flow>
        <step id="step3" parent="s3"/>
    </flow>
</split>
<step id="step4" parent="s4"/>

    引用写法

<job id="job">
    <flow id="job1.flow1" parent="flow1" next="step3"/>
    <step id="step3" parent="s3"/>
</job>

<flow id="flow1">
    <step id="step1" parent="s1" next="step2"/>
    <step id="step2" parent="s2"/>
</flow>

9、内容值动态绑定,只限于bean的属性

<bean id="flatFileItemReader" scope="step"
      class="org.springframework.batch.item.file.FlatFileItemReader">
    <property name="resource" value="#{jobParameters['input.file.name']}" />
</bean>

 

 

© 著作权归作者所有

共有 人打赏支持
伟丶
粉丝 1
博文 7
码字总数 2359
作品 0
合肥
程序员
Spring Retry重试机制

在调用第三方接口或者使用mq时,会出现网络抖动,连接超时等网络异常,所以需要重试。为了使处理更加健壮并且不太容易出现故障,后续的尝试操作,有时候会帮助失败的操作最后执行成功。例如,...

aoho ⋅ 05/09 ⋅ 0

Spring Tool Suite 3.9.4 发布,支持 JDK 10

Spring Tool Suite 3.9.4 发布了。Spring Tool Suite 是针对 Spring 集成开发工具,基于 Spring IDE ,提供了其它的一些特性,如基于 Spring dm Server 的 osgi 开发,及其它一些 Spring 项目...

周其 ⋅ 04/17 ⋅ 0

Spring Boot 2.0 新特性解读

点击上方“程序员小灰”,选择“置顶公众号” 有趣有内涵的文章第一时间送达! 本文转载自公众号 InfoQ 作者|翟永超编辑|郭蕾Spring Boot 2.0 来啦,有哪些新特性?升级吗?写在前面 北京时...

bjweimengshu ⋅ 04/13 ⋅ 0

SpringBatch job run twice every time, but I want to run only once

Change application.properties spring.batch.job.enabled=false, 缺省值为true @EnableAutoConfiguration for Spring Batch, 缺省情况下会创建一个job, 在context中所有的jobs都会被执行。......

JerryNing ⋅ 04/29 ⋅ 0

Spring Batch 4.0.0 正式发布,批处理框架

Spring Batch 4.0.0 已发布,Spring Batch 是一个轻量级的,完全面向 Spring 的批处理框架,可以应用于企业级大量的数据处理系统。Spring Batch 以 POJO 和 Spring 框架为基础,使开发者更容...

王练 ⋅ 2017/12/05 ⋅ 6

springmvc 配置过程及详解

加入jar包 在web.xml中 添加spring监听器 org.springframework.web.context.ContextLoaderListener 添加spring容器(父容器)配置文件: contextConfigLocation/WEB-INF/config/application-......

那位先生 ⋅ 2014/08/12 ⋅ 1

Spring-Batch处理MySQL数据后存到CSV文件

1 介绍 用Spring Batch实现了个简单的需求,从MySQL中读取用户表数据,根据生日计算年龄,将结果输出到csv文件。 1.1 准备表及数据 2 实现 2.1 项目目录 2.2 实体类 2.3 ItemReader TestUse...

yysue ⋅ 05/26 ⋅ 0

Spring Batch 4.0.0.M2 发布,批处理框架

Spring Batch 4.0.0.M2 发布了,这是 Spring Batch 4.0 系列的第二个里程碑版本。本次更新包括以下内容: 依赖更新 继续改进 Java 配置 详细内容请参阅发布主页 Spring Batch 是一个轻量级的...

局长 ⋅ 2017/05/16 ⋅ 1

Spring Batch 3.0.8 发布,批处理框架

Spring Batch 3.0.8 发布了,Spring Batch 是一个轻量级的,完全面向 Spring 的批处理框架,可以应用于企业级大量的数据处理系统。Spring Batch 以 POJO 和 Spring 框架为基础,使开发者更容...

淡漠悠然 ⋅ 2017/07/23 ⋅ 3

Spring Batch 4.0.0.M5 发布,批处理框架

Spring Batch 4.0.0.M5 已发布,Spring Batch 是一个轻量级的,完全面向 Spring 的批处理框架,可以应用于企业级大量的数据处理系统。Spring Batch 以 POJO 和 Spring 框架为基础,使开发者更...

王练 ⋅ 2017/10/25 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

聊聊spring cloud gateway的LoadBalancerClientFilter

序 本文主要研究一下spring cloud gateway的LoadBalancerClientFilter GatewayLoadBalancerClientAutoConfiguration spring-cloud-gateway-core-2.0.0.RELEASE-sources.jar!/org/springfram......

go4it ⋅ 16分钟前 ⋅ 0

详解:Nginx反代实现Kibana登录认证功能

Kibana 5.5 版后,已不支持认证功能,也就是说,直接打开页面就能管理,想想都不安全,不过官方提供了 X-Pack 认证,但有时间限制。毕竟X-Pack是商业版。 下面我将操作如何使用Nginx反向代理...

问题终结者 ⋅ 23分钟前 ⋅ 0

002、nginx配置虚拟主机

一、nginx配置虚拟主机可分为三种方式,分别为: 1、基于域名的虚拟主机,通过域名来区分虚拟主机——应用:外部网站 2、基于端口的虚拟主机,通过端口来区分虚拟主机——应用:公司内部网站...

北岩 ⋅ 26分钟前 ⋅ 0

shell脚本之死循环写法

最近在学习写shell脚本,在练习if while等流程控制时,突然它们的死循环写法是怎么样的?经过百度与亲测记录如下: for死循环 #! /bin/bashfor ((;;));do date sleep 1d...

hensemlee ⋅ 28分钟前 ⋅ 0

苹果的ARKit2.0有多可怕,看了就知道

序言 ARKit主要由三部分组成: 跟踪(Tracking) 跟踪是ARKit的核心组件之一,其提供了设备在物理世界中的位置与方向信息,并对物体进行跟踪,如人脸。 2.场景理解(Scene Understanding) 场...

_小迷糊 ⋅ 29分钟前 ⋅ 0

5.1 vim介绍 5.2 vim移动光标 5.3 ,5.4vim一般模式下移动光标,复制粘贴

vim命令 vim是vi的一个升级版;vim可以显示文字的颜色 安装vim这一个包vim-enhanced 如果不知道安装包,可以使用 命令下面命令来查看vim命令是那个包安装的。 [root@linux-128 ~]# yum prov...

Linux_老吴 ⋅ 33分钟前 ⋅ 0

vim一般模式

vim 是什么 vim是什么 ? 在之前接触Linux,编辑网卡配置文件的时候我们用过了vi ,vim简单说就是vi的升级版,它跟vi一样是Linux系统中的一个文本编辑工具。 如果系统中没有vim ,需要安装一...

李超小牛子 ⋅ 41分钟前 ⋅ 0

docker实战

构建企业级Docker虚拟化平台实战 重点剖析虚拟化和云计算概念; 分析Docker虚拟化的概念和原理; 从0开始实战Docker虚拟化平台; 基于Docker构建Nginx WEB服务器和CentOS虚拟机; 基于开源监...

寰宇01 ⋅ 50分钟前 ⋅ 0

vim介绍、vim颜色显示和移动光标、vim一般模式下移动光标、一般模式下复制粘贴剪切

VIM Vim 是 UNIX 文本编辑器 Vi 的加强版本,加入了更多特性来帮助编辑源代码。Vim 的部分增强功能包括文件比较(vimdiff),语法高亮,全面的帮助系统,本地脚本(Vimscript),和便于选择的...

蛋黄Yolks ⋅ 今天 ⋅ 0

springboot+mockito测试controller层遇到的问题

使用MockitoJUnitRunner测试的一个例子,原来报错无法找到bean, 类似的异常如下:createBeanError..... 原因:是因为@Runwith使用了SpringRunner,应该修改为MockitoJUnitRunner 代码如下: ...

writeademo ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部