Слушатель электронной почты Spring Batch - PullRequest
0 голосов
/ 28 января 2019

Я хочу настроить Spring Batch на отправку электронного письма, когда задание началось, а также на отправку электронного письма, когда задание завершено или не выполнено.Я видел некоторые примеры при поиске, например, ссылка здесь на codecentric , но я не использую аннотацию XML в своем проекте.

У меня есть слушатель, который выглядит так, но неуверен, что другие части мне могут понадобиться.Любой ввод будет оценен

public class SendMailListener implements JobExecutionListener {

    final static Logger LOGGER = LoggerFactory.getLogger(SendMailListener.class);

    @Autowired
    private JobExplorer explorer;

    @Autowired
    private StepExecution stepExecution;

    @Override
    public void afterJob(JobExecution jobExecution) {
        if (jobExecution.getStatus() == BatchStatus.COMPLETED) {
            LOGGER.info("The job has been completed with the following parameters: " + jobExecution.getJobParameters());
        }
        //send email here

    }

    @Override
    public void beforeJob(JobExecution jobExecution) {
        // TODO Auto-generated method stub

    }
    //send email here
}

РЕДАКТИРОВАТЬ:

У меня есть работа, определенная с слушателем:

@Bean(name = "mccINSTANCETESTjob")
    public Job mccOrz004job(JobBuilderFactory jobFactory, //
            @Qualifier("instanceTestSetupStep") Step orz004SetupStep, //
            @Qualifier("callM204Step") Step callM204Step, //
            @Autowired SingleInstanceListener listener, @Autowired SendMailListener mailListener) { //
        return jobFactory.get("mccINSTANCETESTjob") //
                .incrementer(new RunIdIncrementer()) //
                .listener(mailListener) //
                .start(orz004SetupStep) //
                .next(callM204Step) //
                .build();
    }

Ответы [ 2 ]

0 голосов
/ 29 января 2019

Вам нужно определить bean-компонент типа JavaMailSender (как в ссылке, которой вы поделились), что-то вроде:

@Bean
public JavaMailSender javaMailSender() {
    JavaMailSenderImpl javaMailSender = new JavaMailSenderImpl();
    // set properties on javaMailSender (user, password, etc)
    return javaMailSender;
}

Затем вы можете внедрить его в свой SendMailListener, как вы это сделали споиск работы.После отправки отправитель электронной почты может использоваться для отправки электронных писем. Вот пример:

public class SendMailListener implements JobExecutionListener {

    final static Logger LOGGER = LoggerFactory.getLogger(SendMailListener.class);

    @Autowired // field injection is not recommended, use constructor injection instead
    private JobExplorer explorer;
    @Autowired // field injection is not recommended, use constructor injection instead
    private JavaMailSender javaMailSender;

    @Autowired
    private StepExecution stepExecution;

    @Override
    public void afterJob(JobExecution jobExecution) {
        if (jobExecution.getStatus() == BatchStatus.COMPLETED) {
            LOGGER.info("The job has been completed with the following parameters: " + jobExecution.getJobParameters());
        }
        //send email here
        MimeMessage message = javaMailSender.createMimeMessage();
        // set message properties (sender, receiver, content)
        javaMailSender.send(message);
    }

    @Override
    public void beforeJob(JobExecution jobExecution) {
        // TODO Auto-generated method stub
        //send email here
        MimeMessage message = javaMailSender.createMimeMessage();
        // set message properties (sender, receiver, content)
        javaMailSender.send(message);
    }

}

Надеюсь, это поможет.

0 голосов
/ 28 января 2019

Так что для обхода нотации XML вы можете перейти к настройке работы, например.

@Bean
public Job demoJob(){
return jobs.get("demoJob")
        .incrementer(new RunIdIncrementer())
        .listener(new JobResultListener())
        .start(demostep())
        .build();
}

Вы можете найти соответствующую статью здесь: https://howtodoinjava.com/spring-batch/spring-batch-event-listeners/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...