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.

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.

É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.

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.

Résumé

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

✨ Vérifier la solution et pratiquer✨ Vérifier la solution et pratiquer✨ Vérifier la solution et pratiquer✨ Vérifier la solution et pratiquer