Как Кварц справляется с пропуском зажигания? - PullRequest
0 голосов
/ 24 апреля 2019

В моем приложении для весенней загрузки есть планировщик (Quartz).Он использует источник данных, определенный в моем весеннем приложении.Я использую MISFIRE_INSTRUCTION_FIRE_NOW. Я знаю, что он срабатывает при запуске планировщика.Теперь в моей работе я делаю две вещи:

  1. Хранение данных с использованием Spring Batch в моей базе данных
  2. Затем извлекаю те же данные и затем отправляю им электронное письмо

Я хочу знать, предположим, что если сервер останавливается / планировщик не работает, т.е. происходит аварийное переключение при выполнении задания .Планировщик перезапускает весь объект или он начинается с того места, где он был остановлен?

Поскольку сообщения электронной почты будут отправляться снова и снова, если задание не будет выполнено.

Триггер

public static Trigger buildJobTrigger(JobDetail jobDetail, Date scheduleDateTime) {
        return TriggerBuilder.newTrigger()
                .forJob(jobDetail)
                .withIdentity(jobDetail.getKey().getName(), "email-triggers")
                .withDescription("Send email Trigger")
                .startAt(scheduleDateTime)
                .withSchedule(SimpleScheduleBuilder.simpleSchedule().withMisfireHandlingInstructionFireNow())
                .build();
    }

Также есть способ узнать, не удалось ли выполнить задание или был успешным, и я вижу данные в таблице qrtz_fired_triggers, когда задание происходит, но затем оно удаляется позже.Есть ли способ сохранить его?Я использовал storeDurably как таковой, но ничего не сохраняется.

Job

return JobBuilder.newJob(jobClass)
            .withIdentity(UUID.randomUUID().toString(), "email-jobs")
            .withDescription(description)
            .usingJobData(jobDataMap)
            .requestRecovery(true)
            .storeDurably(true)
            .build();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...