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.

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.

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.

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.

Zusammenfassung

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

✨ Lösung prüfen und üben✨ Lösung prüfen und üben✨ Lösung prüfen und üben✨ Lösung prüfen und üben