Premier programme avec le framework Quartz

JavaBeginner
Pratiquer maintenant

Introduction

Dans ce projet, vous allez apprendre à utiliser le framework Quartz pour planifier et exécuter un simple travail qui rappelle à l'utilisateur de se réveiller, de se brosser les dents et de se laver la figure.

🎯 Tâches

Dans ce projet, vous allez apprendre :

  • Comment implémenter l'interface Job dans la classe RemindJob pour définir la tâche qui doit être exécutée
  • Comment implémenter une classe RemindScheduler pour planifier et exécuter le RemindJob à l'aide du planificateur Quartz
  • Comment écrire une fonction de test pour vérifier la fonctionnalité de planification de la classe RemindScheduler

🏆 Réalisations

Après avoir terminé ce projet, vous serez capable de :

  • Utiliser le framework Quartz pour planifier et exécuter des travaux
  • Créer et configurer des instances JobDetail et Trigger pour un travail
  • Démarrer et arrêter le planificateur Quartz
  • Écrire des fonctions de test pour vérifier la fonctionnalité de votre application

Implémentez la classe RemindJob

Dans cette étape, vous allez apprendre à implémenter la classe RemindJob qui implémente l'interface Job du framework Quartz.

  1. Ouvrez le fichier RemindJob.java situé dans le répertoire /home/labex/project/QuartzRemind/src/main/java/org/labex.

  2. Implémentez la méthode execute() de l'interface org.quartz.Job. Cette méthode sera appelée par le planificateur Quartz lorsque le travail est exécuté.

@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());
}

La méthode execute() doit afficher le message de rappel "Wake up! Brush your teeth and wash your face!" et l'heure système actuelle.

✨ Vérifier la solution et pratiquer

Implémentez la classe RemindScheduler

Dans cette étape, vous allez apprendre à implémenter la classe RemindScheduler qui planifie et exécute le RemindJob.

  1. Ouvrez le fichier RemindScheduler.java situé dans le répertoire /home/labex/project/QuartzRemind/src/main/java/org/labex.

  2. Implémentez la méthode getJobDetail() qui crée et renvoie une instance org.quartz.JobDetail pour le RemindJob.

public static JobDetail getJobDetail() {
    return JobBuilder.newJob(RemindJob.class)
         .withIdentity("reminderJob", "reminderGroup")
         .build();
}
  1. Implémentez la méthode getTrigger() qui crée et renvoie une instance org.quartz.Trigger pour le RemindJob. Le déclencheur répétera le travail toutes les 2 secondes, 3 fois.
public static Trigger getTrigger() {
    return TriggerBuilder.newTrigger()
         .withIdentity("reminderTrigger", "reminderGroup")
         .startNow()
         .withSchedule(SimpleScheduleBuilder.simpleSchedule()
               .withIntervalInSeconds(2)
               .withRepeatCount(2))
         .build();
}
  1. Implémentez la méthode doScheduler() qui planifie et exécute le RemindJob à l'aide de l'instance org.quartz.Scheduler.
public void doScheduler() throws SchedulerException, InterruptedException {
    Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();

    // Démarrez le planificateur
    scheduler.start();

    System.out.println("Planification démarrée");

    // Planifiez le travail avec le JobDetail et le Trigger définis
    scheduler.scheduleJob(getJobDetail(), getTrigger());

    // Dormez pendant 10 secondes
    Thread.sleep(10000);

    // Arrêtez le planificateur
    scheduler.shutdown();

    System.out.println("Planification terminée");
}

Cette méthode démarre le planificateur, planifie le travail avec les instances JobDetail et Trigger, attend 10 secondes, puis arrête le planificateur.

✨ Vérifier la solution et pratiquer

Écrivez la fonction de test

Dans cette étape, vous allez apprendre à écrire une fonction de test pour vérifier la fonctionnalité de planification de la classe RemindScheduler.

  1. Ouvrez le fichier TestQuartz.java situé dans le répertoire /home/labex/project/QuartzRemind/src/test/java/org/labex.

  2. Implémentez la méthode test() qui crée une instance de RemindScheduler et appelle sa méthode doScheduler().

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

Cette méthode de test exécutera la fonctionnalité de planification et vérifiera que le travail est exécuté comme prévu.

✨ Vérifier la solution et pratiquer

Exécutez le test

Pour exécuter le test et vérifier le projet, suivez ces étapes :

  1. Ouvrez un terminal et accédez au répertoire /home/labex/project/QuartzRemind.

  2. Exécutez la commande suivante pour exécuter le test :

mvn test

Vous devriez voir la sortie suivante :

Planification démarrée
Wake up! Brush your teeth and wash your face!
Current system time - Fri Apr 26 06:54:03 CST 2024
Wake up! Brush your teeth and wash your face!
Current system time - Fri Apr 26 06:54:05 CST 2024
Wake up! Brush your teeth and wash your face!
Current system time - Fri Apr 26 06:54:07 CST 2024
Planification terminée

Cette sortie indique que le RemindJob a été exécuté trois fois, comme prévu par la classe RemindScheduler.

Félicitations! Vous avez réussi à terminer le projet en implémentant les classes RemindJob et RemindScheduler, et en écrivant une fonction de test pour vérifier la fonctionnalité de planification.

✨ Vérifier la solution et pratiquer

Résumé

Félicitations! Vous avez terminé ce projet. Vous pouvez pratiquer plus de laboratoires dans LabEx pour améliorer vos compétences.