Was ist der Unterschied zwischen Scheduler des Standby-Modus () und pauseAll ()?
-
01-10-2019 - |
Frage
Ich bin mit Quartz Scheduler v.1.8.0.
Was ist der Unterschied zwischen scheduler.standby () und scheduler.pauseAll () ?
Standby-Modus () - Vorübergehend das Auslösen von Triggern des Scheduler hält.
pauseAll () - Pause alle Trigger - ähnlich wie calling pauseTriggerGroup (Gruppe) auf jedem Gruppe jedoch nach der Verwendung dieses Verfahren resumeAll () aufgerufen werden muss, um klar den Zustand des Schedulers von ‚Erinnerung‘, dass alle neuen Trigger wird angehalten, wie sie hinzugefügt werden.
Nach dem, was ich von der API-Dokumentation verstanden habe, bin ich nicht in der Lage leicht zu / klar differenzieren / unterscheidet von jedem von ihnen. Ich beide sehen die demselben Zweck dienen - vorübergehend pausieren / halt alle die Auslöser im Scheduler und anschließend gefolgt von einem start () (für Standby) oder resumeAll () (für pauseAll) der Scheduler des Staates zu löschen. Gibt es einen anderen Unterschied?
Hope Experten kann mir helfen, jede feine Unterschied zu verstehen.
Lösung
Der Unterschied ist in Triggerfehlzündung Anweisungen Verhalten angewendet wird.
Wenn Sie auf Start () aufrufen, nach dem Standby-Modus (), alle Fehlzündungen, die während Standby angezeigt wird, wird ignoriert.
Wenn Sie anrufen resumeAll () nach pauseAll (), alle Fehlzündungen, die erscheinen, während Scheduler angehalten wurde, wird applyed werden.
Andere Tipps
Es ist der Unterschied, wenn Scheduler nach Standby und pauseAll .
Ich habe in folgenden Beschreibung von API-Dokumentation Unterschied in fett gemacht.
Standby :
void Standby () wirft SchedulerException stoppt vorübergehend die Scheduler Auslösen von Triggern.
Wenn starten () aufgerufen wird (bringt die Scheduler aus Stand-by-Modus), Auslöser Fehlzündung Anweisungen nicht während der Ausführung der angewendet werden start () Methode - werden alle Fehlzündungen sein unmittelbar danach (durch die erfasste JobStor normaler Prozess).
Der Scheduler nicht zerstört wird, und kann jederzeit neu gestartet werden.
pauseAll :
void pauseAll () throws SchedulerException alle Trigger Pause - ähnlich wie pauseTriggerGroup (Gruppe) auf jeden Aufruf Gruppe jedoch nach der Verwendung dieses Verfahren resumeAll () aufgerufen werden muss, um klar den Zustand des Schedulers von ‚Erinnerung‘, dass alle neuen Trigger wird angehalten, wie sie hinzugefügt werden.
Wenn resumeAll () aufgerufen wird (zu un-Pause), Trigger-Fehlzündung Anweisungen angewandt werden.
Hier sind, was ich aus dem Quellcode v1.8.6 bekam:
standby()
einfach friert den Scheduler-Thread, die nicht mehr Triggermittel werden ab sofort gefeuert werden, auch diese neuen Trigger später hinzugefügt .
start()
nur den Scheduler-Thread wieder aufzunehmen, und gilt nicht Fehlzündung Politik sofort . Aber alle Fehlzündungen werden später natürlich angewandt werden.
pauseAll()
ähnelt Anruf pauseTriggerGroup()
auf alle jetzt vorhandenen Trigger Gruppen , die später diese neuen Trigger-Gruppen hinzugefügt bedeutet normalerweise abgefeuert werden. Und beachten Sie bitte, dass es nichts mit pauseJob()
oder pauseJobGroup()
zu tun, es ist nur über das, was auf Trigger und ihre Gruppen geschieht.
resumeAll()
ähnelt Aufruf resumeTriggerGroup()
auf alle jetzt vorhandenen Trigger-Gruppen. Darüber hinaus werden Aussetzern während der Ausführung von resumeAll()
angewandt werden.
start () und Standby () sind pro Instanz Methoden. Andere Instanzen in Clustered-Modus ausgeführt werden Trigger-Jobs fortzusetzen.
resumeAll () und pauseAll () ist für den gesamten Cluster.
Während pauseAll()
Pausen alle Pläne (bereits von diesem Moment erstellt), standby()
Pausen ein Scheduler selbst . So, wenn Sie einen neuen Zeitplan erstellen, nach pauseAll()
wird es in geeigneter Weise geplant und ausgeführt werden, aber im Fall von standby()
läuft es nicht früher als ein ‚Start ()‘ wird Methode auf einem Scheduler aufgerufen werden.