Кварц .net - Прервать / остановить текущее выполнение задания и приостановить все триггеры - PullRequest
0 голосов
/ 13 декабря 2018

В моем проекте я использую Quartz.net Scheduler (3.0.7), сейчас есть некоторый автоматизированный процесс проверки, который считывает БД, обрабатывает ее и генерирует выходные данные на основе нескольких условий (вы можете взять пример механизма отправки электронной почты)который отправляет электронное письмо, прочитанное из БД, и отправляет на соответствующий почтовый адрес). Теперь, если мы предполагаем, что есть 300 запросов, которые будут обработаны, и для каждого из них потребуется много времени, сейчас требуется одна функция, которая приостанавливает текущее выполнение задания.хочу, чтобы, если из 300 запросов было выполнено 25, а в настоящее время 26 выполняется, то задание должно завершить 26-е выполнение, но должно остановить остальную часть запроса.

Я пытался реализовать методы Pause и Interrupt дляQuartz.net

т.е. ожидаем планировщик. PauseJob (jobKey);&

await scheduler.Interrupt (jobKey);

, который может приостанавливать предстоящие выполнения. Если я могу получить какое-либо событие или токен в классе выполнения задания, я могу достичь того, что хочу.

IInterruptableJob был удален с Quartz.net

Если кто-нибудь может помочь мне в этом.

1 Ответ

0 голосов
/ 13 декабря 2018

Из руководства по миграции :

Интерфейс IInterruptableJob был удален.Вам нужно проверить IQobExecutionContext's CancellationToken.IsCancellationRequested, чтобы определить, было ли запрошено прерывание задания.

Так что сочетание паузы и наблюдения за токеном должно работать.

...