springbatch多step,decision

本文原创,如转载请标明原文链接!
文章都是心得,写的不一定对,欢迎讨论~
<batch:job id="testJob" restartable="true">
    <batch:flow id="myFlowTest"  parent="doFlowTest" />

batch:job>


<batch:flow id="doFlowTest">
    <batch:step id="testStep1" next="decision">
        <batch:tasklet transaction-manager="transactionManager" >
            <batch:chunk reader="itemReader"  processor="testProcessor" writer="itemWriter"
                         commit-interval="1"/>
        batch:tasklet>
    batch:step>
    <batch:decision id="decision" decider="jobDecider">
        <batch:next on="*" to="testStep2" />
        <batch:next on="COMPLETED" to="testStep3" />
    batch:decision>
    <batch:step id="testStep2" >
        <batch:tasklet transaction-manager="transactionManager" >
            <batch:chunk reader="itemReader"  processor="testProcessor" writer="itemWriter"
                         commit-interval="1"/>
        batch:tasklet>
    batch:step>
    <batch:step id="testStep3" >
        <batch:tasklet transaction-manager="transactionManager">
            <batch:chunk reader="itemReader"  processor="testProcessor" writer="itemWriter"
                         commit-interval="1"/>
        batch:tasklet>
    batch:step>
batch:flow>
<bean id="jobDecider" class="com.XXXXXXXXX.JobStepDecider" >

bean>

大概的配置和之前的差不太多,也很好理解。但是发现一个问题,
commit-interval
这个属性配置的值如果大于read能查出来的记录数,这种配置会出现等待显现。writer会等待你积攒够了写数据的数量才会写入。

不过!!在我之前写的文章里面,commit-interval,数量大于reader到的数量,他也会写入,不会出现等待迟迟不写入的情况。而且这篇文章里面多step,如果read到的数据较少,不建议使用多线程(线程池)的方式,可能会报错。

你可能感兴趣的:(java,spring,batch)