【发布时间】:2014-07-08 20:49:01
【问题描述】:
我们如何在 Spring Batch 中优雅地处理特定于应用程序的异常?
案例:
考虑一个包含三个步骤 A、B、C 的 Spring Batch 应用程序(tasklet 方法)。
Step A 检索数据,如果没有可用数据,作业应跳过其余步骤并正常关闭并提供错误消息。
目前,如果我们抛出特定于应用程序的异常,则会记录整个跟踪并完成作业。如果有 StepExecutionListener 实现,则在作业终止之前执行 afterStep 方法。
有没有办法抑制跟踪?
补充说明:
- 步骤 A 应处于失败状态。
- 我们可以在步骤执行中使用
setTerminateOnly()来实现这些目的吗?如果不是,那么 setTerminateOnly 的一般用途是什么?
【问题讨论】:
-
“正常关闭”...该步骤应该处于失败状态还是完成状态?
-
如果您想完成作业,请在步骤 A 和 (B,C) 之间使用
JobExecutionDecider:如果步骤 A 中没有可用数据,则使用决策者转到“结束”。
标签: spring spring-batch