繁体   English   中英

Spring Batch Job登录完成

[英]Spring Batch Job logging on completion

我有一个像这样运行的Spring批处理作业:

public void myMethod() throws JobParametersInvalidException, JobExecutionAlreadyRunningException, JobRestartException, JobInstanceAlreadyCompleteException {
    logger.log("Job Starting");

    JobParameters param = new JobParametersBuilder()
            .addString("JobID", String.valueOf(System.currentTimeMillis()))
            .toJobParameters();

    jobLauncher.run(myJob(), param);

    logger.log("Job Finished");
}

通过使用TaskExecutor异步运行。 因此,第二个logger.log在调用作业后立即记录。

我希望在myJob()完成后记录日志。

我曾尝试更改实际工作以执行此操作,但这似乎不是最佳解决方案。 我也尝试寻找诸如andThenonComplete方法,但找不到任何东西。

有没有办法做到这一点?

您可能想看看JobExecutionListener它使您可以在作业执行之前和之后进行一些处理。

public class DoSomethingAroundJob implements JobExecutionListener {

  public void beforeJob(JobExecution jobExecution) {
      System.out.println("Called beforeJob().");
  }

  public void afterJob(JobExecution jobExecution) {
      System.out.println("Called afterJob().");
  }
}

然后,您需要将Job配置为使用此侦听器。 例如。

@Bean
public Job myJob(){
    return jobs.get("myJob")           
        .listener(new DoSomethingAroundJob())          
        .build();
}

您的工作还有其他部分,但是上面仅显示了添加带有JavaConfig的侦听器的示例。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM