Тасклет отправителя электронной почты выполняется только при выполнении пакета Spring Java сбой задания - PullRequest
0 голосов
/ 08 мая 2020

Я хочу получить некоторые инструкции о том, как создать тасклет отправителя электронной почты, который будет выполняться только при сбое задания java. У меня есть собственный класс системных исключений, который также останавливает работу. Я добавил в свой файл pom. Я застрял при создании класса тасклета. В основном я хочу, чтобы электронное письмо отправлялось всякий раз, когда возникает исключение.

Ответы [ 2 ]

1 голос
/ 09 мая 2020

Вы можете использовать JobExecutionListenerSupport для прослушивания статуса задания при событии вашего пользовательского системного исключения, которое останавливает задание.

Отправлять уведомление по электронной почте можно настроить в прослушивателе вместо создания нового шага Tasklet.

Ниже приведен фрагмент прослушивателя 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 did not complete successfully");

            // you can customize with the help of java mail service
            mailService.sendNotificationMailForFailure();
        }
    }

}

Ниже приведен фрагмент задания Определение фасоли,

@Bean
public Job lifeCycleJob() throws Exception {


    Job job = jobBuilderFactory.get("lifeCycleJob").incrementer(new RunIdIncrementer())
    .start(startFlow).next(step1()).next(step2()).next(endFlow).end()
    .listener(jobCompletionListener()).build();

    return job;
}


@Bean
public JobCompletionListener jobCompletionListener() {
    return new JobCompletionListener();
}
0 голосов
/ 08 мая 2020

Вы не хотите тасклет. Если вы сделаете его тасклетом, это будет намного больше работы, и если задание не удастся, тасклет никаким образом не выполнил бы его. () метод.

Слушатели могут быть установлены на уровнях областей Job, Step, Chunk, ItemReader, ItemProcessor, ItemWriter. В вашем случае, чтобы поймать ошибку, вы, вероятно, захотите создать список вакансий и проверять статус работы после ее завершения. Также существуют определенные методы c onError () для некоторых слушателей.

Создайте свой слушатель.

publi c класс MyJobListener расширяет JobExecutionListenerSupport {

@Override
public void afterJob(JobExecution jobExecution) {
    if (jobExecution.getStatus() != BatchStatus.COMPLETED) {
        // Send EMAIL call.
    }
}

}

Затем прикрепите список к заданию.

@Bean
public MyJobListener listener() {
    return new MyJobListener();
}

@Bean
public Job demoJob(MyJobListener listner){
    return jobs.get("demoJob")
        .listener(listner)
        .start(stepOne())
        .next(stepTwo())
        .build();
}

См. Также: Использование слушателей для обнаружения ошибок на шагах в Spring Batch

...