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 certaines actions selon un planning : envoi de newsletters par email, archivage de logs, synchronisation de données ou génération de rapports. Pour résoudre ces tâches, il existe une bibliothèque puissante et flexible : Quartz Scheduler. C'est un framework open-source qui permet de créer, planifier et gérer des tâches (Jobs) à l'aide de déclencheurs (Triggers) et d'expressions cron. Quartz s'intègre facilement avec Spring Boot, Java EE et toute application autonome.



Fonctionnalités principales de Quartz

  • Planification flexible — prise en charge des intervalles simples (toutes les N secondes/minutes) et des expressions cron complexes.
  • Persistance — stockage de l'état des tâches dans une base de données (JDBC JobStore) pour une récupération après redémarrage de l'application.
  • Clustering — répartition des tâches entre plusieurs nœuds pour la tolérance aux pannes.
  • Exécution parallèle — possibilité d'exécuter plusieurs tâches simultanément.
  • Exécutions manquées — configuration du comportement en cas d'indisponibilité (instructions misfire).


Installation et configuration

Pour utiliser Quartz, ajoutez la dépendance dans 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'


Création d'une tâche simple

Chaque tâche dans Quartz est une classe implémentant l'interface Job. À l'intérieur de la méthode execute(), on écrit la logique métier.

import org.quartz.Job;import org.quartz.JobExecutionContext;import org.quartz.JobExecutionException;

public class HelloJob implements Job { @Override public void execute(JobExecutionContext context) throws JobExecutionException { System.out.println("Bonjour ! Tâche exécutée à " + new java.util.Date()); }}


Configuration du planificateur et du déclencheur

Le planificateur (Scheduler) est créé via la fabrique StdSchedulerFactory. Ensuite, on crée un déclencheur — simple (SimpleTrigger) ou basé sur cron (CronTrigger).

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

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

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

// 3. Créer le déclencheur — exécution toutes les 10 secondes Trigger trigger = TriggerBuilder.newTrigger() .withIdentity("myTrigger", "group1") .startNow() .withSchedule(SimpleScheduleBuilder.simpleSchedule() .withIntervalInSeconds(10) .repeatForever()) .build();

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


Utilisation des expressions cron

Les expressions cron permettent de définir des plannings complexes. Format : secondes minutes heures jour-du-mois mois jour-de-la-semaine.

// Exécution tous les jours à 18h30CronScheduleBuilder cronSchedule = CronScheduleBuilder        .dailyAtHourAndMinute(18, 30);

// Ou manuellement : "0 30 18 * * ?" (tous les jours à 18h30)Trigger cronTrigger = TriggerBuilder.newTrigger() .withIdentity("cronTrigger", "group1") .withSchedule(CronScheduleBuilder.cronSchedu

Recommendations