Quartz Scheduler Java: Komplettes Tutorial mit Beispielen

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

Quartz Scheduler für Java: Komplettes Tutorial mit Beispielen

1. Was ist Quartz und warum wird es benötigt?

Quartz Scheduler ist eine leistungsstarke, industrietaugliche Bibliothek zur Aufgabenplanung (Job Scheduling) in Java-Anwendungen. Sie bietet Entwicklern einen flexiblen und zuverlässigen Mechanismus, um beliebigen Java-Code zu einer bestimmten Zeit oder nach einem festgelegten Zeitplan auszuführen. Quartz kann sowohl in einfache Konsolen-Dienstprogramme als auch in komplexe Unternehmenssysteme integriert werden, die auf Anwendungsservern (Tomcat, JBoss, WebLogic) und in Spring-Anwendungen laufen.

Warum wird es benötigt? In jeder ernsthaften Anwendung entsteht früher oder später die Notwendigkeit, Hintergrundoperationen durchzuführen: E-Mail-Newsletter versenden, Berichte generieren, Daten mit externen Systemen synchronisieren, temporäre Dateien bereinigen, Bestellstatus prüfen. Die manuelle Implementierung solcher Mechanismen mit java.util.Timer oder ScheduledExecutorService wird mit steigenden Anforderungen komplex und unzuverlässig: Es müssen verpasste Aufgaben, Clusterbildung, Persistenz von Zeitplänen und komplexe Cron-Ausdrücke verwaltet werden. Quartz löst all diese Probleme "out of the box".

Die wichtigsten Funktionen von Quartz: Unterstützung komplexer Trigger (Cron, einfache Intervalle, Kalender), Persistenz von Jobs und Triggern in einer Datenbank (JDBC JobStore), Clusterbildung für Ausfallsicherheit, Listener zur Überwachung der Ausführung, Transaktionsunterstützung sowie die Möglichkeit, Aufgaben dynamisch hinzuzufügen, zu entfernen und zu ändern, ohne den Scheduler anzuhalten. Dank dieser Eigenschaften ist Quartz der De-facto-Standard für die Planung im Java-Ökosystem.

2. Installation

Quartz Scheduler wird über Maven Central vertrieben. Fügen Sie es Ihrem Projekt mit Maven oder Gradle hinzu.

Maven

<dependency>
    <groupId>org.quartz-scheduler</groupId>
    <artifactId>quartz</artifactId>
    <version>2.3.2</version>
</dependency>

<!-- Für die Verwendung von JDBC JobStore (optional) -->
<dependency>
    <groupId>org.quartz-scheduler</groupId>
    <artifactId>quartz-jobs</artifactId>
    <version>2.3.2</version>
</dependency>

Gradle

implementation 'org.quartz-scheduler:quartz:2.3.2'
implementation 'org.quartz-scheduler:quartz-jobs:2.3.2'

Wenn Sie Spring Boot verwenden, reicht es aus, den Starter spring-boot-starter-quartz hinzuzufügen, der bereits Quartz enthält und automatisch konfiguriert.

3. Schnellstart – Minimales funktionierendes Beispiel

Erstellen wir eine einfache Anwendung, die alle 5 Sekunden "Hallo, Quartz!" ausgibt.

import org.quartz.*;
import org.quartz.impl.StdSchedulerFactory;

public class QuartzQuickStart {

    // 1. Job erstellen – die Klasse, die die Arbeit ausführt
    public static class HalloJob implements Job {
        @Override
        public void execute(JobExecutionContext context) throws JobExecutionException {
            System.out.println("Hallo, Quartz! Zeit: " + System.currentTimeMillis());
        }
    }

    public static void main(String[] args) throws Exception {
        // 2. Scheduler von der Factory holen
        Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();

        // 3. Scheduler starten
        scheduler.start();

        // 4. JobDetail definieren – die Aufgabenbeschreibung
        JobDetail job = JobBuilder.newJob(HalloJob.class)
                .withIdentity("meinJob", "gruppe1")
                .build();

        // 5. Trigger erstellen – Zeitplan: alle 5 Sekunden, unendlich
        Trigger trigger = TriggerBuilder.newTrigger()
                .withIdentity("                    

Empfehlungen