如何在 Spring 批次中给出 FAILED 状态

How can I give FAILED status in Spring Batch

当作者的结果不符合我自己的条件时,我想在 spring 批次中给出 FAILED 状态。

我在哪里可以给出 BatchStauts is Failed on my code?

// writer

    override fun write(input: MutableList<out Long>) {

        ...

            if ((-1) * result <= remainAmount) {
                println("SUCCESS")
            } else {
                println("HOW CAN I GIVE FAILED STATUS?")
            }
        }
    }

//step

    @Bean("verifyStep")
    fun verifyStoreGroupCouponStep(): Step {
        return stepBuilderFactory!!.get("verifyStep")
            .chunk<Long, Long>(10000)
            .reader(getIdReader)
            .writer(verifyWriter)
            .build()
    }

从您的 else 块中抛出异常。 Spring 批处理会将作业标记为 FAILED in BATCH_JOB_EXECUTION table.

您可以实现StepExecutionListener 接口,该接口提供beforeStep() 和afterStep() 方法。 因此,当您的条件不满足时,在 write() 方法中设置一个标志,您可以在 afterStep() 方法中验证该标志,并且在该方法中您可以 return ExitStatus.FAILED。如图:

@Override
    public ExitStatus afterStep(StepExecution stepExecution) {

        if (!condition)
         return ExitStatus.FAILED;
       else
         return ExitStatus.COMPLETED; 
}