Java-Aufgabenplaner: Quartz Scheduler
In der modernen Java-Entwicklung besteht häufig die Notwendigkeit, bestimmte Aktionen nach einem Zeitplan auszuführen: Versand von E-Mail-Newslettern, Archivierung von Logs, Datensynchronisation oder Berichtserstellung. Für diese Aufgaben gibt es die leistungsstarke und flexible Bibliothek Quartz Scheduler. Es handelt sich um ein Open-Source-Framework, mit dem Sie Aufgaben (Jobs) mithilfe von Triggern und Cron-Ausdrücken erstellen, planen und verwalten können. Quartz lässt sich einfach in Spring Boot, Java EE und beliebige Standalone-Anwendungen integrieren.
Hauptfunktionen von Quartz
- Flexible Planung – Unterstützung für einfache Intervalle (alle N Sekunden/Minuten) und komplexe Cron-Ausdrücke.
- Persistenz – Speicherung des Aufgabenstatus in einer Datenbank (JDBC JobStore) zur Wiederherstellung nach einem Neustart der Anwendung.
- Clustering – Verteilung von Aufgaben auf mehrere Knoten für Ausfallsicherheit.
- Parallele Ausführung – Möglichkeit, mehrere Aufgaben gleichzeitig auszuführen.
- Ausgelassene Ausführungen – Konfiguration des Verhaltens bei Ausfallzeiten (Misfire Instructions).
Installation und Einbindung
Fügen Sie zur Verwendung von Quartz die Abhängigkeit in Ihre pom.xml (Maven) ein:
<dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz</artifactId> <version>2.3.2</version></dependency>Für Gradle:
implementation 'org.quartz-scheduler:quartz:2.3.2'Erstellen einer einfachen Aufgabe
Jede Aufgabe in Quartz ist eine Klasse, die das Interface Job implementiert. Innerhalb der Methode execute() wird die Geschäftslogik geschrieben.
import org.quartz.Job;import org.quartz.JobExecutionContext;import org.quartz.JobExecutionException;
public class HelloJob implements Job { @Override public void execute(JobExecutionContext context) throws JobExecutionException { System.out.println("Hallo! Aufgabe ausgeführt um " + new java.util.Date()); }}Konfiguration des Schedulers und Triggers
Der Scheduler wird über die Factory StdSchedulerFactory erstellt. Anschließend wird ein Trigger erstellt – entweder ein einfacher (SimpleTrigger) oder einer auf Basis von Cron (CronTrigger).
import org.quartz.*;import org.quartz.impl.StdSchedulerFactory;
public class QuartzExample { public static void main(String[] args) throws SchedulerException { // 1. Scheduler holen Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
// 2. Aufgabe definieren JobDetail job = JobBuilder.newJob(HelloJob.class) .withIdentity("myJob", "group1") .build();
// 3. Trigger erstellen – Ausführung alle 10 Sekunden Trigger trigger = TriggerBuilder.newTrigger() .withIdentity("myTrigger", "group1") .startNow() .withSchedule(SimpleScheduleBuilder.simpleSchedule() .withIntervalInSeconds(10) .repeatForever()) .build();
// 4. Aufgabe mit Trigger verknüpfen und Scheduler starten scheduler.scheduleJob(job, trigger); scheduler.start(); }}Verwendung von Cron-Ausdrücken
Cron-Ausdrücke ermöglichen die Angabe komplexer Zeitpläne. Format: Sekunden Minuten Stunden Tag-im-Monat Monat Tag-in-der-Woche.
// Ausführung jeden Tag um 18:30 UhrCronScheduleBuilder cronSchedule = CronScheduleBuilder .dailyAtHourAndMinute(18, 30);
// Oder manuell: "0 30 18 * * ?" (jeden Tag um 18:30 Uhr)Trigger cronTrigger = TriggerBuilder.newTrigger() .withIdentity("cronTrigger", "group1") .withSchedule(CronScheduleBuilder.cronSchedu Auch in der Bibliothek
Aufgabenwarteschlangen in Swift: GCD, OperationQueue und Swift Concurrency
Aufgabenwarteschlangen in C# (.NET): System.Threading.Channels, Hangfire und RabbitMQ
Beste Logging-Bibliotheken für Go (Golang): Überblick und Vergleich
ORM für Swift (iOS/macOS): Vergleich und Anwendungsbeispiele
Rust PDF erstellen: Komplette Anleitung mit Beispielen