【问题标题】:how to stop/terminate the step in execution listeners in spring batch?如何在春季批处理中停止/终止执行侦听器中的步骤?
【发布时间】:2016-06-09 16:16:23
【问题描述】:

我在步骤执行侦听器中进行了文件名验证。如果文件名无效,我想终止/停止进入阅读器的步骤。如何在小批量中实现这一点?

【问题讨论】:

    标签: spring-batch terminate


    【解决方案1】:

    侦听器是进行数据验证的错误位置。如果您必须验证单个数据项,请使用处理器并引发适当的异常。

    如果您想验证更“一般”的方面,如文件名或文件的存在或任何其他不属于单个项目的条件,请在处理步骤之前使用 tasklet 步骤。

    【讨论】:

      【解决方案2】:

      Hansjoerg 的回答是正确的。仍然至于如何实现你想要做的事情,这里有一个例子:

      @Override
      public ExitStatus afterStep(StepExecution stepExecution) {
          return ExitStatus.FAILED;
      }
      

      这将返回一个 ExitStatus FAILED,您可以在您的 <next on="" /> 标签上使用它来防止进入阅读器。

      【讨论】:

      • 谢谢大家。我按照建议将验证从 Listeners 移至 Tasklet。
      【解决方案3】:

      解决您的问题的最佳选择是使用JobExecutionDecider 执行文件名验证并停止作业或转到下一步

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-09-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-12-16
        相关资源
        最近更新 更多