java quartz-scheduler scheduler standby

java - ¿Cuál es la diferencia entre el modo de espera del programador() y pauseAll()?



quartz-scheduler scheduler (5)

Aquí está lo que obtuve del código fuente v1.8.6:

standby() simplemente congela el subproceso del programador, lo que significa que no se dispararán más activadores a partir de ahora, incluso los nuevos activadores agregados más adelante .

start() simplemente reanuda el subproceso del programador y no aplicará las políticas de fallo de encendido inmediatamente . Pero todas las fallas se aplicarán más tarde de forma natural.

pauseAll() es similar a call pauseTriggerGroup() en todos los grupos de activadores existentes , lo que significa que los nuevos grupos de activadores que se agreguen más tarde se activarán normalmente. Y tenga en cuenta que no hay nada que hacer con pauseJob() o pauseJobGroup() , solo se trata de lo que sucede en los activadores y sus grupos.

resumeAll() es similar a la llamada resumeTriggerGroup() en todos los grupos de desencadenantes existentes. Además, se aplicarán resumeAll() durante la ejecución de resumeAll() .

Estoy usando Quartz Scheduler v.1.8.0.

¿Cuál es la diferencia entre scheduler.standby() y scheduler.pauseAll() ?

standby () - Detiene temporalmente la activación de Disparadores del Programador.

pauseAll () : pausa todos los desencadenantes - similar a llamar a pauseTriggerGroup (grupo) en cada grupo, sin embargo, después de usar este método, se debe llamar a resumeAll () para borrar el estado del "recordatorio" del programador de que todos los nuevos desencadenantes se pausarán como están adicional.

Según lo que he entendido de la documentación de la API, no puedo diferenciar / distinguir fácilmente / claramente de cada uno de ellos. Veo que ambos cumplen el mismo propósito: pausar / detener temporalmente todos los activadores en el programador, y luego seguir con un inicio () (en espera) o reanudar todo () (para pausar todos) para borrar el estado del programador. ¿Hay alguna otra diferencia?

Los expertos en esperanza pueden ayudarme a comprender cualquier diferencia sutil.


Hay una diferencia cuando el programador se reanuda después de la standby y la pauseAll .

He hecho una diferencia en negrita en la siguiente descripción de los documentos API.

en espera

void standby () lanza la excepción SchedulerException detiene temporalmente el disparo de los disparadores del programador.

Cuando se llama a start () (para que el programador salga del modo de espera), NO se aplicarán las instrucciones de disparo incorrecto durante la ejecución del método start (); cualquier fallo de encendido se detectará inmediatamente después (mediante el proceso normal de JobStore) .

El programador no se destruye y se puede reiniciar en cualquier momento.

pauseAll :

void pauseAll () lanza la excepción SchedulerException Pausa todos los desencadenantes, similar a llamar a pauseTriggerGroup (grupo) en todos los grupos; sin embargo, después de usar este método, se debe llamar a resumeAll () para borrar el estado de "recordatorio" del programador. se añaden.

Cuando se llama a resumeAll () (para anular la pausa), se aplicarán las instrucciones de activación de error de disparo.


La diferencia radica en que las instrucciones de disparo erróneo activan el comportamiento.

Cuando se llama a start () después de la espera (), se ignoran todos los errores que aparezcan mientras se encuentra en espera.

Cuando llama a resumeAll () después de pauseAll (), se aplicarán todos los errores que aparecen mientras el programador estaba en pausa.


Mientras pauseAll() hace una pausa en todas las programaciones (ya creadas en ese momento), standby() hace una pausa en un programador . Por lo tanto, cuando crea una nueva programación, después de pauseAll() , se programará y ejecutará de manera apropiada, pero en caso de standby() se ejecuta antes de que se llame a un método ''start ()'' en un programador.


start () y standby () son métodos por instancia. Otras instancias que se ejecutan en modo agrupado continuarán activando trabajos.

resumeAll () y pauseAll () se aplica a todo el clúster.