Java-Aufgabenplaner: Quartz Scheduler – Vollständiger Leitfaden

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

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

Empfehlungen