Кварц Крон Осечка
Я новый кварцевый планировщик и у меня возникли проблемы.
Когда я использую простой планировщик следующим образом:
Trigger misFiredTriggerB = TriggerBuilder.newTrigger().startAt(DateUtils.addSeconds(new Date(), -63)).withSchedule(SimpleScheduleBuilder.simpleSchedule().withMisfireHandlingInstructionFireNow()).build();
он работает нормально, учитывает порог пропуска зажигания и инструкцию пропуска зажигания в зависимости от случая.
Однако когда я использую планировщик cron и использую время за несколько секунд до текущего времени, он не учитывает ни порог, ни инструкцию по пропускам зажигания.
Trigger misFiredTriggerA = TriggerBuilder.newTrigger().withIdentity("SimpleTrigger").withSchedule(CronScheduleBuilder.cronSchedule("30,35,38 50 17 * * ?").withMisfireHandlingInstructionFireAndProceed()).build();
Есть что-то, что я делаю не так с cron?
Другой вопрос, как я могу легко изменить пороговое значение пропуска зажигания в затмении, поскольку по умолчанию оно установлено на 60000?
Заранее спасибо.
0 ответов
Есть разница между триггерами Simple и Cron.
- Выполнение простого триггера запланировано на точную дату, которая может быть до или после текущей даты. В вашем случае до этого прошло более 60 секунд (свойство org.quartz.jobStore.misfireThreshold (в миллисекундах)), поэтому Quartz считает, что такой триггер сработал с ошибкой.
- Quartz использует Cron Trigger для планирования выполнения на ближайшую дату в будущем с учетом выражения cron. Так что в вашем случае работа будет запущена завтра в 17:50:30.