【问题标题】:Spring batch JobExecutionListener doesn't workSpring批处理JobExecutionListener不起作用
【发布时间】:2020-03-19 08:41:08
【问题描述】:

我有一个正常工作的 Spring 批处理作业;我添加了一个作业侦听器来更改应用程序的退出状态,但该作业永远不会进入侦听器(从不调用 beforeJob 和 afterJob)。这是我的代码的一部分:

@Bean(name = "myJob")
public Job myJob(@Qualifier("initStep") Step initStep,
        @Qualifier("firstStep") Step firstStep,
        @Qualifier("onSuccessStep") Step onSuccessStep) {

    return jobBuilderFactory.get("myJob")
            .listener(new JobExecutionListener() {
                @Override
                public void beforeJob(JobExecution jobExecution) {

                }

                @Override
                public void afterJob(JobExecution jobExecution) {
                    ExitStatus exitStatus = jobExecution.getExitStatus() ;

                    if(exitStatus != ExitStatus.COMPLETED ){
                        System.exit(1);
                    }
                }
            })
            .start(initStep)
            .next(firstStep)
            .next(onSuccessStep)
            .build();
}

作业正确开始和结束,但它永远不会进入侦听器;有什么建议吗?

【问题讨论】:

  • 不幸的是无法帮助未执行侦听器(此代码适用于我)。请注意 ExitStatus 不是枚举,因此您必须将它们的 exitCode 属性与 equals 进行比较。

标签: java spring spring-boot spring-batch


【解决方案1】:

共享的代码对我有用。但是您可以尝试以下替代实现来检查是否适合您,

显示带有侦听器的示例作业配置的片段,

Job job = jobBuilderFactory.get("jobName").incrementer(new RunIdIncrementer())
    .start(step1()).next(step2()).next(step3()).next(step4).end()
    .listener(jobCompletionListener()).build();

@Bean
public JobCompletionListener jobCompletionListener() {
    return new JobCompletionListener();
}

JobCompletionListener 实现的片段,

public class JobCompletionListener extends JobExecutionListenerSupport {

private static final Logger logger = LoggerFactory.getLogger(JobCompletionListener.class);

   @Override
   public void afterJob(JobExecution jobExecution) {
       if (jobExecution.getStatus() == BatchStatus.COMPLETED) {
           logger.info("Job execution completed successfully");
       } else {
           logger.error("Job Execution Failed");
       }
   }
}

【讨论】:

    猜你喜欢
    • 2022-07-19
    • 2017-04-24
    • 2018-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多