Erstes Programm mit dem Quartz-Framework

JavaBeginner
Jetzt üben

Einführung

In diesem Projekt lernst du, wie du das Quartz-Framework verwendest, um einen einfachen Job zu planen und auszuführen, der den Benutzer daran erinnert, aufzustehen, die Zähne zu putzen und sich zu waschen.

🎯 Aufgaben

In diesem Projekt wirst du lernen:

  • Wie du die Job-Schnittstelle in der RemindJob-Klasse implementierst, um die Aufgabe zu definieren, die ausgeführt werden muss
  • Wie du die RemindScheduler-Klasse implementierst, um den RemindJob mit dem Quartz-Scheduler zu planen und auszuführen
  • Wie du eine Testfunktion schreibst, um die Planungsfunktionalität der RemindScheduler-Klasse zu überprüfen

🏆 Errungenschaften

Nach Abschluss dieses Projekts wirst du in der Lage sein:

  • Das Quartz-Framework zum Planen und Ausführen von Jobs zu verwenden
  • JobDetail- und Trigger-Instanzen für einen Job zu erstellen und zu konfigurieren
  • Den Quartz-Scheduler zu starten und zu beenden
  • Testfunktionen zu schreiben, um die Funktionalität deiner Anwendung zu überprüfen

Implementiere die RemindJob-Klasse

In diesem Schritt lernst du, wie du die RemindJob-Klasse implementierst, die die Job-Schnittstelle aus dem Quartz-Framework implementiert.

  1. Öffne die Datei RemindJob.java im Verzeichnis /home/labex/project/QuartzRemind/src/main/java/org/labex.

  2. Implementiere die execute()-Methode der org.quartz.Job-Schnittstelle. Diese Methode wird vom Quartz-Scheduler aufgerufen, wenn der Job ausgeführt wird.

@Override
public void execute(JobExecutionContext context) throws JobExecutionException {
    System.out.println("Wake up! Brush your teeth and wash your face!");
    System.out.println("Current system time - " + new Date());
}

Die execute()-Methode sollte die Erinnerungsmeldung "Wake up! Brush your teeth and wash your face!" und die aktuelle Systemzeit ausgeben.

✨ Lösung prüfen und üben

Implementiere die RemindScheduler-Klasse

In diesem Schritt lernst du, wie du die RemindScheduler-Klasse implementierst, die den RemindJob planen und ausführen.

  1. Öffne die Datei RemindScheduler.java im Verzeichnis /home/labex/project/QuartzRemind/src/main/java/org/labex.

  2. Implementiere die getJobDetail()-Methode, die eine org.quartz.JobDetail-Instanz für den RemindJob erstellt und zurückgibt.

public static JobDetail getJobDetail() {
    return JobBuilder.newJob(RemindJob.class)
         .withIdentity("reminderJob", "reminderGroup")
         .build();
}
  1. Implementiere die getTrigger()-Methode, die eine org.quartz.Trigger-Instanz für den RemindJob erstellt und zurückgibt. Der Trigger wird den Job alle 2 Sekunden 2-mal wiederholen.
public static Trigger getTrigger() {
    return TriggerBuilder.newTrigger()
         .withIdentity("reminderTrigger", "reminderGroup")
         .startNow()
         .withSchedule(SimpleScheduleBuilder.simpleSchedule()
               .withIntervalInSeconds(2)
               .withRepeatCount(2))
         .build();
}
  1. Implementiere die doScheduler()-Methode, die den RemindJob mit der org.quartz.Scheduler-Instanz planen und ausführen.
public void doScheduler() throws SchedulerException, InterruptedException {
    Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();

    // Starte den Scheduler
    scheduler.start();

    System.out.println("Planung gestartet");

    // Planen Sie den Job mit der definierten JobDetail und Trigger
    scheduler.scheduleJob(getJobDetail(), getTrigger());

    // Schlafe für 10 Sekunden
    Thread.sleep(10000);

    // Stoppe den Scheduler
    scheduler.shutdown();

    System.out.println("Planung abgeschlossen");
}

Diese Methode startet den Scheduler, planen Sie den Job mit den JobDetail- und Trigger-Instanzen, warten Sie 10 Sekunden und stoppen Sie dann den Scheduler.

✨ Lösung prüfen und üben

Schreibe die Testfunktion

In diesem Schritt lernst du, wie du eine Testfunktion schreibst, um die Planungsfunktionalität der RemindScheduler-Klasse zu überprüfen.

  1. Öffne die Datei TestQuartz.java im Verzeichnis /home/labex/project/QuartzRemind/src/test/java/org/labex.

  2. Implementiere die test()-Methode, die eine Instanz von RemindScheduler erstellt und deren doScheduler()-Methode aufruft.

@Test
public void test() {
    try {
        new RemindScheduler().doScheduler();
    } catch (InterruptedException | SchedulerException e) {
        e.printStackTrace();
    }
}

Diese Testmethode wird die Planungsfunktionalität ausführen und überprüfen, ob der Job wie erwartet ausgeführt wird.

✨ Lösung prüfen und üben

Führe die Tests aus

Um die Tests auszuführen und das Projekt zu überprüfen, folge diesen Schritten:

  1. Öffne ein Terminal und navigiere zum Verzeichnis /home/labex/project/QuartzRemind.

  2. Führe den folgenden Befehl aus, um die Tests auszuführen:

mvn test

Du solltest die folgende Ausgabe sehen:

Planung gestartet
Wake up! Brush your teeth and wash your face!
Aktuelle Systemzeit - Fri Apr 26 06:54:03 CST 2024
Wake up! Brush your teeth and wash your face!
Aktuelle Systemzeit - Fri Apr 26 06:54:05 CST 2024
Wake up! Brush your teeth and wash your face!
Aktuelle Systemzeit - Fri Apr 26 06:54:07 CST 2024
Planung abgeschlossen

Diese Ausgabe zeigt an, dass der RemindJob dreimal wie geplant vom RemindScheduler-Klasse ausgeführt wurde.

Herzlichen Glückwunsch! Du hast das Projekt erfolgreich abgeschlossen, indem du die RemindJob- und RemindScheduler-Klassen implementiert hast und eine Testfunktion geschrieben hast, um die Planungsfunktionalität zu überprüfen.

✨ Lösung prüfen und üben

Zusammenfassung

Herzlichen Glückwunsch! Du hast dieses Projekt abgeschlossen. Du kannst in LabEx weitere Labore absolvieren, um deine Fähigkeiten zu verbessern.