Ich lese die Frühling 3.0 docs zur Terminplanung. Ich tendiere zu Springs JobDetailBean für Quartz. Allerdings ist die @Geplant Anmerkung ist mir ins Auge gefallen. Es scheint, dass dies eine andere Möglichkeit ist, Aufgaben mit dem Spring Framework zu planen. Basierend auf den Dokumenten bietet Spring drei Möglichkeiten der Planung:
@Geplant
Über Quarz
Über JDK-Timer
Ich habe kein Interesse am JDK Timer. Warum sollte ich @Scheduled gegenüber Quartz wählen? (Wenn ich Quartz erwähne, meine ich die Verwendung von Spring’s Bean Wrapper für Quartz).
Angenommen, mein Anwendungsfall ist so komplex, dass ich mit einem Drittanbieter-Webdienst kommunizieren werde, um Daten in bestimmten Intervallen zu importieren und zu exportieren.
Quartz ist um Größenordnungen komplexer als der eingebaute Scheduler von Spring, einschließlich der Unterstützung für persistente, transaktionale und verteilte Jobs. Es ist jedoch ein bisschen wie ein Schwein, selbst mit der API-Unterstützung von Spring.
Wenn Sie nur alle X Sekunden oder nach einem Cron-Zeitplan Methoden auf einer Bean ausführen müssen, dann @Scheduled (oder die verschiedenen Optionen in Spring’s <task> Konfigurationsschema) reicht wohl
“Es ist [Quartz] ein bisschen ein Schwein” – es ist 2 Jahre später und ich mache den gleichen Vergleich wie @chris. Ist Quartz immer noch schwierig über Spring zu verwenden?
– Eduard
21. Februar 2013 um 16:13 Uhr
Unterstützt @Scheduled CLUSTER? Wenn ja, wie kann ich es erreichen?
– Rushabh Patel
17. Juli 2015 um 8:24 Uhr
Nein, @Scheduled unterstützt keine Cluster- oder Multi-Node-Umgebungen, was die einzige große Einschränkung zu sein scheint und der Hauptgrund, warum viele Leute immer noch Quartz verwenden.
– BrianC
9. Dezember 2016 um 16:38 Uhr
Ich habe Quarz mit dem Wrapper von Spring verwendet und ein Scheduler-Modul für unser Unternehmen entwickelt. Ich finde es eine gute Wahl. Quarz mit Feder ist nicht komplex. Und es funktioniert perfekt in einer geclusterten Umgebung. Wir haben kein Problem gefunden, damit zu arbeiten.
– Lernender
6. Februar 2017 um 11:17 Uhr
Schöner Artikel von Khalid Saleem – khalidsaleem.blogspot.in/2015/03/…. Grundsätzlich ist Spring Scheduler (Spring 3.0+) eine wirklich leichte Implementierung, die für einfache Planungsanforderungen ausreicht und Unterstützung für Anmerkungen sowohl für die Aufgabenplanung als auch für die Ausführung asynchroner Methoden bietet. Es bietet Unterstützung für feste Raten und Verzögerungen sowie Cron-basierte Planung. Quartz bietet jedoch Unterstützung für Funktionen auf Unternehmensebene wie JTA und Clustering. Es wird mit JobPersistence (JDBC- und RAM-Speicher) geliefert, das für Fail-Safe- und Load-Balancing-Zwecke verwendet werden kann.
– Mahesh
26. Juni 2017 um 18:02 Uhr
Ich muss meine eigenen Erfahrungen in Bezug auf die Verwendung von angeben @Scheduled gegen Quartz als Scheduling-Implementierung in einer Spring-Anwendung.
Das Planen von Jobs hatte die folgenden Anforderungen:
Endbenutzer sollten die Möglichkeit haben, ihre eigenen Aufgaben zu speichern und zu planen (Ausführungszeit festzulegen).
Geplante Jobs während Serverausfallzeiten sollten nicht aus der Jobwarteschlange ausgelassen werden
Daher müssen wir versuchen, die Quartz-Implementierung (Version 2.2.3) zu verwenden, um die Persistenz von Jobs in einer Datenbank zu unterstützen. Einige grundlegende Schlussfolgerungen sind die folgenden:
Die Integration in eine Spring 4 MVC-Anwendung ist mit der Dateiquarz.properties überhaupt nicht schwierig.
Wir hatten die Möglichkeit, eine zweite Datenbank zum Speichern der Jobs aus der Hauptdatenbank auszuwählen.
Jobs, die während der Serverausfallzeit geplant sind, werden ausgeführt, solange der Server hochfährt.
Als Bonus haben wir es geschafft, in der Hauptdatenbank einige nützliche (und benutzerorientiertere) Informationen über benutzerdefinierte geplante Jobs zu verwalten, die benutzerdefinierte verwenden JobListener und TriggerListener.
Quartz ist eine sehr hilfreiche Bibliothek in Anwendungen mit komplexeren Planungsanforderungen.
Fügen Sie den neuen Job zum Planer hinzu und weisen Sie ihn an, den vorhandenen Job durch den angegebenen Namen und die Gruppe (falls vorhanden) zu “ersetzen”.
Im Frühjahr konnten Sie Aufgaben mit FixedRate, FixedDelay und Cron planen. Aber die meisten geplanten Jobs erfordern eine dynamische Behandlung der Ausführungszeit. Daher ist es in diesem Szenario besser, Quartz zu verwenden, da es die Möglichkeit bietet, geplante Jobs sowohl in DBJobstore als auch in RAMJobstore zu speichern.
14413700cookie-checkFrühjahrsplanung: @Scheduled vs. Quartzyes