在操作过程中停止JSR批处理应用程序而不会引发异常

时间:2020-02-12 15:44:37

标签: jsr352 java-batch

我们有一个jsr 352 Java批处理应用程序,如果满足条件但不引发异常,我们希望尽早停止执行。我们工作的基本布局如下:

<job id=XXX>
  <step id="XXX">
    <listeners>
      <listener ref=XXXXX /> <--Step listener
      <listener ref=XXXX /> <-- Item process listener
    </listeners>
    <chunk checkpoint-policy="item" item-count="1">
      <reader ref=XXXXXX />
      <processor ref=XXXXXX />
      <writer ref=XXXXXX />
    </chunk>
  </step>
</job>

在我们的步骤侦听器中,在beforeStep()方法中,如果满足特定条件,我们不想继续其余的批处理作业,我们只想优雅地停止。直到现在,结束批处理作业的唯一事情就是针对错误情况引发的异常或成功完成该作业。

如果在步骤侦听器中满足该条件,那么我们将如何跳过该步骤的其余步骤,因为这是唯一的步骤?另外,抛出异常是在错误情况下结束批处理过程的推荐方法,还是有更好/更推荐的方法?

1 个答案:

答案 0 :(得分:1)

您可以具有一个外部组件来监视条件,并根据条件停止当前作业的执行。调用JobOperator stop方法将正常停止作业的执行。

或者您可以让项目读取器检查条件,并在返回true时返回null,这自然会结束步骤执行。