Planificateur de tâches Java : Quartz Scheduler – guide complet

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Planificateur de tâches Java : Quartz Scheduler



Dans le développement moderne en Java, il est souvent nécessaire d'exécuter du code selon un planning : envoi de newsletters par email, vidage du cache, génération de rapports ou synchronisation de données. Pour ces besoins, il existe une bibliothèque puissante, Quartz Scheduler — le standard de facto pour la planification de tâches dans l'écosystème Java.



Quartz Scheduler est un framework open-source qui permet de créer, planifier et gérer des tâches (Jobs) grâce à un système flexible de déclencheurs (triggers). Il prend en charge aussi bien les simples délais que les expressions cron complexes, résiste aux pannes et peut être intégré avec Spring Boot, Jakarta EE et d'autres plateformes.



Fonctionnalités principales

  • Planification flexible — prise en charge des déclencheurs simples (SimpleTrigger) avec délai et répétition, ainsi que des déclencheurs cron (CronTrigger) pour des plannings complexes.
  • Persistance — les tâches et les déclencheurs peuvent être stockés en base de données (JDBC JobStore), garantissant leur exécution même après un redémarrage de l'application.
  • Clustering — possibilité d'exécuter plusieurs instances du planificateur avec coordination via la base de données.
  • Listeners — écoute des événements d'exécution des tâches (JobListener, TriggerListener) pour la journalisation ou un traitement supplémentaire.
  • Monitoring — API intégrée pour visualiser les tâches en cours, leur statut et leur historique d'exécution.


Installation et configuration

Pour commencer, ajoutez la dépendance à votre fichier pom.xml (Maven) :

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

Pour Gradle :

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


Exemple de création d'une tâche simple

Créons une classe implémentant l'interface Job. C'est notre tâche :

import org.quartz.Job;import org.quartz.JobExecutionContext;import org.quartz.JobExecutionException;import java.time.LocalTime;

public class SimpleJob implements Job { @Override public void execute(JobExecutionContext context) throws JobExecutionException { System.out.println("Tâche exécutée à : " + LocalTime.now()); // Votre code métier ici }}


Planification d'une tâche avec SimpleTrigger

Lançons la tâche dans 5 secondes et répétons-la toutes les 10 secondes :

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

public class SimpleSchedulerExample { public static void main(String[] args) throws SchedulerException { // 1. Créer le planificateur Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();

// 2. Définir la tâche (JobDetail) JobDetail job = JobBuilder.newJob(SimpleJob.class) .withIdentity("myJob", "group1") .build();

// 3. Créer le déclencheur : démarrage dans 5 secondes, répétition toutes les 10 secondes Trigger trigger = TriggerBuilder.newTrigger() .withIdentity("myTrigger", "group1") .startAt(DateBuilder.futureDate(5, DateBuilder.IntervalUnit.SECOND)) .withSchedule(SimpleScheduleBuilder.simpleSchedule() .withIntervalInSeconds(10) .repeatForever()) .build();

// 4. Assigner la tâche au déclencheur et démarrer scheduler.scheduleJob(job, trigger); scheduler.start(); }}


Utilisation de CronTrigger pour des plannings complexes

Les expressions cron permettent de définir un planning de n'importe quelle complexité. Par exemple, tous les jours à 9h30 du matin :

Trigger cronTrigger = TriggerBuilder.newTrigger()        .withIdentity("cronTrigger", "group1")                    

Recommendations