【问题标题】:Spring Batch How to get JobExecution Object in Process ListnerSpring Batch如何在进程监听器中获取JobExecution对象
【发布时间】:2017-09-18 17:25:53
【问题描述】:

我在我的项目中有要求 ItemProccesor 中发生的任何异常都需要在 JobExecution 上下文中存储异常并在 JobExecution 结束时发送邮件以获取异常记录但是如何在 processListner 中获取 JobExecution 对象? 我尝试在 processListner 中使用 @beforestep 但 JobExecution 对象为 null 有什么方法可以在进程 Listner 中获取 JobExecution 上下文

【问题讨论】:

    标签: spring-batch


    【解决方案1】:

    我在春季批处理中得到了解决上述问题的方法,需要在进程侦听器中指定作业范围,并在下面提到的侦听器类代码中访问作业执行上下文。

     @Bean
        @JobScope
        public CaliberatedProcessorListener calibratedProcessorListener() {
    
            return new CaliberatedProcessorListener();
        }
    public class CaliberatedProcessorListener <T, S> implements ItemProcessListener<T, S> {
    
        @Value("#{jobExecution}")
        public JobExecution jobExecution;
    
        @Override
        public void beforeProcess(T calibratedProessorInPut) {
    
            // // do nothing
        }
    
        @Override
        public void afterProcess(T calibratedProessorInput, S calibratedProessorOutPut) {
    
            // do nothing
        }
    
        @Override
        public void onProcessError(T item, Exception calibratedProcessorEx) {
    
            FtpEmailData ftpEmailData = (FtpEmailData) jobExecution.getExecutionContext().get("calDeviceBatchInfo");
            ftpEmailData.getExceptionList().add(new CalibratedDeviceException(calibratedProcessorEx.getMessage()));
        }
    
    }
    

    【讨论】:

      猜你喜欢
      • 2018-01-21
      • 2014-11-28
      • 2018-06-14
      • 1970-01-01
      • 1970-01-01
      • 2018-10-06
      • 2011-02-28
      • 2023-03-23
      • 1970-01-01
      相关资源
      最近更新 更多