Ich verwende Quartz Scheduler als eine Spring Bean in einer Clusterumgebung.Quartz Scheduler: Trigger einige Jobs auf jedem Cluster-Knoten und einige nur einmal pro Cluster
Ich habe einige Jobs mit @NotConcurrent annotiert und sie laufen einmal pro Cluster (d. H. Nur in einem Knoten, nur in einem Thread).
Jetzt muss ich einen Job auf jedem Knoten des Clusters ausführen. Ich habe die Annotation @NotConcurrent entfernt, aber sie wird nur auf jedem Thread auf einem Computer ausgeführt. Es wird nicht auf anderen Knoten ausgelöst.
Womit soll ich den Job annotieren?
Beispiel: Job1 NotConcurrent mit Anmerkungen ist um Mitternacht geplant => Es wird nur jeden Mitternacht auf 1 Maschine ausgelöst. Job2 mit Anmerkungen versehen um Mitternacht => Er feuert jeden Mitternacht auf jede Maschine.
Vielen Dank.
Danke. Da ich diese Einschränkung kannte, verwendete ich feder @ Scheduled Annotation mit einem Cron-Ausdruck, um diesen Job auf allen Clusterknoten zu starten. Dieser hybride Ansatz funktioniert ziemlich gut. – fnqlo
Hallo Jan, kannst du bitte eine mögliche Lösung genauer erklären? Ich habe ein ähnliches Problem, ich muss eine Aufgabe auf allen Weblogic-Knoten ausführen (derzeit sind es 2). Ich würde es gerne ad hoc machen können (z.B. von einem Servlet). Ich verwende bereits Quarz für einige geplante Jobs, also habe ich mich gefragt, ob es möglich ist, diese Aufgabenverteilung an sie zu delegieren. Danke – andreybavt
Die Idee war, dass Sie Ihre Worker-Jobs implementieren, aber Sie keine Trigger mit ihnen verknüpfen. Dann haben Sie eine Art von Orchestrator-Job, der mit einem Trigger verknüpft wird. Wenn Quartz den Orchestrator-Job auslöst, stellt der Job über den JMX-, RMI- oder JAX-WS-Webdienst (wenn QuartzDesk vorhanden ist) eine Verbindung zu den Quartz-Knoten her, auf denen Sie Ihre Worker-Jobs ausführen möchten. Wenn Sie möchten, dass Ihre Worker-Jobs auf allen Quartz-Instanzen ausgeführt werden, durchläuft der Orchestrator-Job einfach die Liste der konfigurierten Quartz-Instanzen und löst diese Jobs "manuell" über JMX/RMI/JAX-WS aus. –