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.

Другие вопросы по тегам