在Spring Batch Tasklet方法中处理特定于应用程序的异常

时间:2014-05-20 14:20:32

标签: spring spring-batch

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

案例:

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

Step A检索数据,如果没有可用数据,作业应跳过剩余的步骤&应该正常关闭,提供错误信息。

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

有没有办法压制痕迹?

附加说明:

  1. 步骤A应处于失败状态。
  2. 我们可以在步骤执行中使用setTerminateOnly()用于此类目的吗?如果没有,setTerminateOnly的一般用法是什么?

1 个答案:

答案 0 :(得分:0)

您可以在StepExecution上设置exitStatus和batchStatus,并调用stepExecution.setTerminateOnly()来终止作业。它将以工作中断异常结束工作。在退出状态中,您可以设置您选择的消息,例如 - stepExecution.setExitStatus(new ExitStatus(“FAILED”,“由于某些错误而停止作业”))。您可以在批处理管理控制台中看到此消息。