如果多步批处理中出现步骤失败,则会在控制台上显示步骤失败消息。
此外,BATCH_STATUS
为COMPLETED
,EXIT_STATUS
为FAILED.
问题1如何将EXIT_STATUS
更改为COMPLETED
?
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>
如果步骤aStep
因作业someJob
失败(aStep
已抛出一些SQLException
)。
然后someJob
继续执行。但在成功完成cStep
后,BATCH_STATUS
的{{1}}为someJob
,但COMPLETED
= EXIT_STATUS
。
此外,FAILED
和BATCH_STATUS
其他步骤如下。
EXIT_STATUS
答案 0 :(得分:3)
Spring Batch有两种状态。第一个是BatchStatus
。此状态由一组预定义值组成,框架使用这些值来指示事物的状态。另一个是ExitStatus
。 ExitStatus
使开发人员能够提供特定于用例的状态消息。
在执行作业时,Spring Batch无法覆盖BatchStatus
。这是设计的。但是,允许在许多地方设置ExitStatus
(通常是StepExecutionListener
和JobExecutionListener
等监听器),以便可以解释框架的结果以满足您的使用情况下。
如果您想在ExitStatus
通常表示作业或步骤失败时指示成功,则应实施相应的侦听器并相应地设置ExitStatus
。
答案 1 :(得分:0)
如果您在页面上参考有关配置作业(http://docs.spring.io/spring-batch/trunk/reference/html/configureStep.html,第5.3.3节)的Spring Batch的文档,您应该能够看到使用<end>
可以通过
完成<job ....>
<step id="step1"...>
....
<end on="FAILED" />
<next on="*" to="step2" />
</step>
<step id="step2" ....>
....
</step>
</job>
通过执行此操作,当step1失败时,作业将以COMPLETED
批处理和退出状态结束。
答案 2 :(得分:0)
您可以在xml中添加以下代码:
如果想要在步骤失败时使作业失败 --
如果您想在步骤失败时在日志中打印一条消息,请包括如下异常处理:
<batch:skippable-exception-classes>
<batch:include class="java.lang.Exception" />
</batch:skippable-exception-classes>
<batch:listeners>
<batch:listener>
<bean class="java.lang.Exception" scope = "step">
</bean>
</batch:listener>
</batch:listeners>