Ich habe eine Quartz-Setup mit mehreren Instanzen und ich möchte einen Auftrag unterbrechen, wo auch immer es ausgeführt wird. Wie es in der Dokumentation gesagt wurde, Scheduler.interrupt()
Methode ist nicht Cluster-bewusst, so dass ich nach einigen gängigen Praxis suchen, um solche Einschränkungen zu überwinden.Unterbrechen eines Jobs in Quarz-Cluster
Antwort
Nun, hier sind einige Grundlagen, die Sie verwenden sollten, um das zu erreichen.
Bei Ausführung im Clustermodus sind die Informationen zu den derzeit ausgeführten Jobs in den Quarztabellen verfügbar. Zum Beispiel enthält der q_fired_triggers
den Job, der ausgeführt wird. Die erste Spalte dieser Tabelle ist der Scheduler-Name, der dafür verantwortlich ist. So ist es ziemlich einfach zu wissen, wer was macht.
Wenn Sie dann den JMX-Export Ihrer Quarzinstanzen org.quartz.scheduler.jmx.export
aktivieren, aktivieren Sie einen neuen Einstiegspunkt, um jeden Scheduler einzeln zu verwalten. Die MBean stellt eine Methode boolean interruptJob("JobName", "JobGroup")
Dann müssen Sie "nur" diese Methode auf der entsprechenden Scheduler-Instanz aufrufen, um sie effektiv zu unterbrechen.
Ich versuchte, das alle Prozess manuell und es funktioniert gut, muss nur :) automatisiert werden
HIH