如何在工作完成后发送电子邮件?

时间:2015-09-15 09:34:27

标签: java spring spring-batch

我创建了一个捆绑多个批处理作业的应用程序。用户可以启动作业,然后将其放入队列中。作业完成后,我想向用户发送报告。

我知道有JobExecutionListener接口。我可以在afterJob()方法中实现电子邮件功能。下一步是将此监听器注册到我的工作中。

有没有办法自动完成我的所有工作?我不想为每个新工作配置它。

2 个答案:

答案 0 :(得分:2)

我创建了一个自定义@Component public class MailListenerBeanPostProcessor implements BeanPostProcessor { @Autowired private MailListener listener; @Override public Object postProcessBeforeInitialization(final Object bean, final String beanName) throws BeansException { return bean; } @Override public Object postProcessAfterInitialization(final Object bean, final String beanName) throws BeansException { if (bean instanceof AbstractJob) { final AbstractJob job = (AbstractJob) bean; job.registerJobExecutionListener(listener); } return bean; } } ,用于将侦听器添加到作业中:

{{1}}

答案 1 :(得分:1)

你可以拥有这样的东西......

public class CustomJobExecutionListener implements JobExecutionListener {

    public void beforeJob(JobExecution arg0) {
      // send email here
    }

    public void afterJob(JobExecution arg0) {
        ExitStatus exitStatus = arg0.getExitStatus();
        String code = exitStatus.getExitCode();
        // send email here
    }

}

XML配置: -

<bean id="customJobExecutionListener" class="com.myBatch.CustomJobExecutionListener"/>

       <batch:job id="job1" restartable="true">
        <batch:listeners>
            <batch:listener ref="customJobExecutionListener" />
        </batch:listeners>
                ...
                ...
        </batch:job>