文档章节

Spring Batch功能轮廓

伟丶
 伟丶
发布于 2017/06/01 09:52
字数 675
阅读 199
收藏 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 Batch 4.1.0.M3 发布,批处理框架

Spring Batch 4.1.0.M3 发布了。这个里程碑的主要更新内容是添加对 JSR-305 注释的支持。利用 Spring Framework的Null-safety 注释,并在适当的 Spring Batch 的所有公共 API 中将其添加。 ...

达尔文
09/05
0
0
Spring Batch_官网DEMO实现

Spring Batch_官网DEMO实现 http://spring.io/guides/gs/batch-processing/ 使用spring xml方式实现了spring batch官网的demo,现在把具体的代码贴出来,具体的细节配置还要参考官网的说明。...

秋风醉了
2014/11/03
0
0
Spring Batch_Multi-threaded Step

Spring Batch_Multi-threaded Step spring官方文档:http://docs.spring.io/spring-batch/trunk/reference/html/scalability.html The simplest way to start parallel processing is to ad......

秋风醉了
2014/11/13
0
0
Spring Batch_Configuring a Step for Restart

Spring Batch_Configuring a Step for Restart spring官方文档:http://docs.spring.io/spring-batch/trunk/reference/html/configureStep.html#stepRestart 当一个普通的 job 处于complete ......

秋风醉了
2014/11/14
0
0
Duplicate entry '0' for key 'PRIMARY'_Spring Batch

Duplicate entry '0' for key 'PRIMARY'Spring Batch 在运行一个job成功后,在运行一次,会出现这个异常Duplicate entry '0' for key 'PRIMARY',也就是主键冲突。 在truncate 表之后执行以下...

秋风醉了
2014/11/12
0
1

没有更多内容

加载失败,请刷新页面

加载更多

Confluence 6 Windows 中以服务方式自动重启的原因

针对长时间使用的 Confluence,我们推荐你配置 Confluence 自动随操作系统重启而启动。针对一些 Windows 的服务器,这意味着需要让 Confluence 以服务的方式运行。 有下面 2 种方式来以服务的...

honeymose
47分钟前
2
0
day93-20180920-英语流利阅读-待学习

时尚之觞:外表光鲜靓丽,其实穷得要命 Lala 2018-09-20 1.今日导读 讲到时尚界,我们脑海里浮现的可能都是模特和设计师光鲜靓丽、从容潇洒的模样。可是,最近在法国出版的一本书却颠覆了我们...

飞鱼说编程
今天
4
0
maven的pom.xml用解决版本问题

maven管理库依赖,有个好处就是连同库的依赖的全部jar文件一起下载,免去手工添加的麻烦,但同时也带来了同一个jar会被下载了不同版本的问题,好在pom的配置里面允许用<exclusion>来排除一些...

JAVA码猿
今天
2
0
20180920 rzsz传输文件、用户和用户组相关配置文件与管理

利用rz、sz实现Linux与Windows互传文件 [root@centos01 ~]# yum install -y lrzsz # 安装工具sz test.txt # 弹出对话框,传递到选择的路径下rz # 回车后,会从对话框中选择对应的文件传递...

野雪球
今天
2
0
OSChina 周四乱弹 —— 毒蛇当辣条

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @ 达尔文:分享花澤香菜/前野智昭/小野大輔/井上喜久子的单曲《ミッション! 健?康?第?イチ》 《ミッション! 健?康?第?イチ》- 花澤香菜/前野智...

小小编辑
今天
456
19

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部