Quartz.Net в приложении MVC, инструкция Misfire
Я использую Quartz.Net в приложении MVC, установленном с NuGet.
И есть триггер, как это:
ITrigger trigger = TriggerBuilder.Create()
.WithIdentity("trigger1", "group1")
.WithCronSchedule("0 0 4 1 * ?")
.Build();
Как я могу добавить инструкцию о пропусках зажигания, чтобы, если сервер не работает в то время, когда задание должно было быть запущено, событие запускается, как только сервер снова включается?
И как это возможно, отслеживает ли Quarts последний раз, когда событие было инициировано? Я не могу найти базу данных или файл, где это может быть сохранено.
1 ответ
Вы можете определить атрибуты расписания cron, используя перегрузку, которая принимает лямбда-выражение:
ITrigger trigger = TriggerBuilder.Create()
.WithIdentity("trigger1", "group1")
.WithCronSchedule("0 0 4 1 * ?", x => x.WithMisfireHandlingInstructionFireAndProceed())
.Build();
Кварц обнаруживает пропуски зажигания, проверяя, прошло ли следующее запланированное время в базе данных. Чтобы сценарий работал, вам нужно использовать постоянное хранилище, как вы уже делаете.
Время срабатывания хранится в таблице QRTZ_TRIGGERS в столбцах NEXT_FIRE_TIME и PREV_FIRE_TIME. Эти значения являются тиками.NET DateTime.