Кварц Крон Осечка

Я новый кварцевый планировщик и у меня возникли проблемы.

Когда я использую простой планировщик следующим образом:

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.
Другие вопросы по тегам