【问题标题】:Handling application specific exceptions in Spring Batch Tasklet approach在 Spring Batch Tasklet 方法中处理特定于应用程序的异常
【发布时间】:2014-07-08 20:49:01
【问题描述】:

我们如何在 Spring Batch 中优雅地处理特定于应用程序的异常?

案例:

考虑一个包含三个步骤 A、B、C 的 Spring Batch 应用程序(tasklet 方法)。

Step A 检索数据,如果没有可用数据,作业应跳过其余步骤并正常关闭并提供错误消息。

目前,如果我们抛出特定于应用程序的异常,则会记录整个跟踪并完成作业。如果有 StepExecutionListener 实现,则在作业终止之前执行 afterStep 方法。

有没有办法抑制跟踪?

补充说明:

  1. 步骤 A 应处于失败状态。
  2. 我们可以在步骤执行中使用setTerminateOnly() 来实现这些目的吗?如果不是,那么 setTerminateOnly 的一般用途是什么?

【问题讨论】:

  • “正常关闭”...该步骤应该处于失败状态还是完成状态?
  • 如果您想完成作业,请在步骤 A 和 (B,C) 之间使用 JobExecutionDecider:如果步骤 A 中没有可用数据,则使用决策者转到“结束”。

标签: spring spring-batch


【解决方案1】:

您可以在 StepExecution 上设置 exitStatus 和 batchStatus 并调用 stepExecution.setTerminateOnly() 来终止作业。它将以作业中断异常结束作业。在退出状态中,您可以设置您选择的消息,例如 - stepExecution.setExitStatus(new ExitStatus("FAILED", "Stopped job due to some error"))。您可以在批处理管理控制台中看到此消息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-11-10
    • 2013-10-29
    • 2012-06-16
    • 2022-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多