Прерванный кварцевый триггер не возобновляется - PullRequest
1 голос
/ 24 марта 2012

В моем проекте я немедленно создаю SimpleTrigger, который вызывает фиктивную работу (выполняет что-то, что длится более 30 секунд).Я установил политику пропуска зажигания как MISFIRE_INSTRUCTION_FIRE_NOW, а для флага восстановления запросов заданий также установлено значение true.

После запуска задания (состояние переходит из состояния READY в состояние RUNNING в хранилище Quartz DB), я намеренно отказов (перезапуск)вся система, и это прерывает текущую работу.Когда система возвращается в активное состояние, я вижу, что прерванная работа вообще не запускается заново.

В нашей производственной системе это будет очень больно, потому что любое обновление программного обеспечения непреднамеренно приведет к прерыванию запущенных заданий в этом экземпляре, а те вообще не будут запускаться (критическое одноразовое заданиенезавершенный, вызывающий нежелательную рябь на предстоящих работах).С нашей точки зрения, это крайне нежелательно.

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

1 Ответ

2 голосов
/ 07 мая 2012

Для этого необходимо настроить задание с параметром requestRecovey в Java и Quartz 2.X:

JobDetail jd = newJob(job).withIdentity(name, group) //
            .requestRecovery()// ask scheduler to re-execute this job
            .build(); // if it was in progress when the scheduler went down...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...