В чем разница между планировщиком standby () и pauseAll ()? - PullRequest
17 голосов
/ 06 сентября 2010

Я использую Quartz Scheduler v.1.8.0.

В чем разница между scheduler.standby () и scheduler.pauseAll () ?

standby () - Временно останавливает срабатывание планировщика триггеров.

pauseAll () - Пауза всех триггеров - аналогично вызову pauseTriggerGroup(group) для каждой группы, однако, после использования этого метода метод resumeAll () должен быть вызван для очистки состояния «запоминания» планировщика о том, что все новые триггеры будут приостановлены по мере их добавления.

На основечто я понял из документации API, я не могу легко / четко отличить / отличить от каждого из них.Я вижу, что они служат одной и той же цели - временно приостанавливают / останавливают все триггеры в планировщике, а затем следуют start () (для режима ожидания) или resumeAll () (для pauseAll), чтобы очистить состояние планировщика.Есть ли какая-либо другая разница?

Надеюсь, что эксперты могут помочь мне понять любую тонкую разницу.

Ответы [ 5 ]

18 голосов
/ 06 сентября 2010

Разница в инструкциях пропуска зажигания, применяющих поведение.

Когда вы вызываете start () после standby (), любые пропуски зажигания, которые появляются в режиме ожидания, будут игнорироваться.вызовите resumeAll () после pauseAll (), будут применены все пропуски зажигания, которые появляются, когда планировщик был приостановлен.

7 голосов
/ 06 сентября 2010

Существует разница, когда планировщик возобновляется после ожидания и pauseAll .

Я выделил жирным шрифтом в следующем описании из документов API.

режим ожидания :

void standby () выбрасывает SchedulerException Временно останавливает запуск планировщиком триггеров.

Когда вызывается start () (длявывести планировщик из режима ожидания), инструкции пропуска зажигания НЕ будут применяться во время выполнения метода start () - любые пропуски зажигания будут обнаружены сразу после этого (обычным процессом JobStore).

Планировщик не уничтожен и может быть перезапущен в любое время.

pauseAll :

void pauseAll () вызывает SchedulerExceptionПриостановить все триггеры - аналогично вызову pauseTriggerGroup (group) для каждой группы, однако после использования этого метода необходимо вызвать метод resumeAll (), чтобы очистить состояние планировщика «запоминать», что все новые триггерыПри добавлении они будут поставлены на паузу.

При вызове resumeAll () (для отмены паузы) будут применяться команды пропуска зажигания.

2 голосов
/ 03 июля 2018

Вот что я получил из исходного кода v1.8.6:

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

start() просто возобновит поток планировщика и не будет применять политики пропуска зажигания немедленно . Но все осечки будут применены позже, естественно.

pauseAll() аналогичен вызову pauseTriggerGroup() для каждой ныне существующих групп триггеров , что означает, что те новые группы триггеров, добавленные позже, будут запускаться нормально. И, пожалуйста, обратите внимание, что тут нет ничего общего с pauseJob() или pauseJobGroup(), речь идет о том, что происходит с триггерами и их группами.

resumeAll() аналогично вызову resumeTriggerGroup() во всех существующих в настоящее время группах триггеров. Кроме того, осечки будут применены во время исполнения resumeAll().

0 голосов
/ 29 октября 2017

Пока pauseAll() приостанавливает все расписания (уже созданные к этому моменту), standby() приостанавливает сам планировщик .Таким образом, когда вы создаете новое расписание, после pauseAll() оно будет запланировано и выполнено соответствующим образом, но в случае standby() оно будет выполнено не раньше, чем метод 'start ()' будет вызван в планировщике.

0 голосов
/ 18 марта 2016

start () и standby () являются методами для каждого экземпляра. Другие экземпляры, работающие в кластерном режиме, будут продолжать запускать задания.

resumeAll () и pauseAll () применимы ко всему кластеру.

...