Цель приведенного ниже кода состоит в том, чтобы отправить электронное письмо и попробовать его N раз в случае сбоя. В этом наборе задач я установил 100, чтобы проверить возобновление при перезапуске сервера приложений.
JobDetail job = newJob(RetryJobWrapper.class)
.storeDurably()
.requestRecovery(true)
.withIdentity("resetPassword", "emailJobs")
.withDescription("An important job that fails with an exception and is retried.")
.usingJobData(RetryJobWrapper.WRAPPED_JOB_KEY, EmailJob.class.getName())
// Set defaults - can be overridden in trigger definition in schedule file
.usingJobData(RetryJobWrapper.MAX_RETRIES_KEY, "100")
.usingJobData(RetryJobWrapper.RETRY_DELAY_KEY, "2")
.build();
Trigger trigger = newTrigger()
.withIdentity("resetPasswordTrigger", "emailJobs")
.startNow()
.withSchedule(simpleSchedule())
.build();
Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
scheduler.scheduleJob(job, trigger);
И в сервлете Boostrap у меня есть этот код:
private void configureJobScheduler() {
try {
Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
scheduler.start();
scheduler.resumeAll();
} catch (SchedulerException e) {
e.printStackTrace();
}
}
Проблема в том, что я установил scheduler.resumeAll();
, задания не возобновляются.Например, во время повторных попыток (скажем, в середине 100 повторных попыток) я перезапустил сервер приложений, задания не возобновляются, что может отсутствовать?