Spring批处理步骤失败

San*_*ley 3 spring-batch

如果多步批处理中出现步骤失败,控制台上会显示步骤失败消息。还有BATCH_STATUS就是COMPLETEDEXIT_STATUSFAILED.

Q.1 如何更改EXIT_STATUSCOMPLETED

Q.2 是否有可能不在控制台中显示失败消息

示例代码

 <job id="someJob" xmlns="http://www.springframework.org/schema/batch"
     restartable="true" parent="baseJob">
    <step id="aStep">
        <job ref="aJob" />
        <next on="*" to="bStep"/>
    </step>
    <step id="bStep" parent="aStep" next="cStep">
        <job ref="bJob"/>
    </step>
    <step id="cStep" parent="bStep">
        <job ref="cJob"/>
    </step>
</job>

 <job id="aJob" xmlns="http://www.springframework.org/schema/batch"
         restartable="true" parent="baseJob">
    <step id="aJobStep">
        <tasklet ref="aJobTasklet" />
    </step>
</job>

<job id="bJob" xmlns="http://www.springframework.org/schema/batch"
         restartable="true" parent="baseJob">
    <step id="bJobStep">
        <tasklet ref="bJobTasklet" />
    </step>
</job>

<job id="cJob" xmlns="http://www.springframework.org/schema/batch"
         restartable="true" parent="baseJob">
    <step id="cJobStep">
        <tasklet ref="cJobTasklet" />
    </step>
</job>
Run Code Online (Sandbox Code Playgroud)

如果 StepaStep作业失败someJobaStep已抛出一些SQLException)。然后someJob继续执行。但成功完成后cStepBATCH_STATUSfor someJobis COMPLETEDbut EXIT_STATUS= FAILED。也BATCH_STATUSEXIT_STATUS其他步骤如下。

Step Name BATCH_STATUS  EXIT_STATUS
aStep     FAILED        FAILED
bStep     COMPLETED     COMPLETED
cStep     COMPLETED     COMPLETED
Run Code Online (Sandbox Code Playgroud)

Mic*_*lla 6

Spring Batch 有两种状态。第一个是BatchStatus。此状态由一组预定义的值组成,框架使用这些值来指示事物的状态。另一个是ExitStatus。这ExitStatus为开发人员提供了提供用例特定状态消息的能力。

在执行作业时,Spring Batch 无法让您覆盖BatchStatus. 这是设计使然。但是,ExitStatus允许在多个位置(通常是像StepExecutionListener和 之类的侦听器JobExecutionListener)设置 ,以便可以解释框架的结果以满足您的用例。

如果您想在ExitStatus通常表示作业或步骤失败时指示成功,您将实现适当的侦听器并相应地设置ExitStatus