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 — un outil puissant pour l'automatisation



Dans le développement Java moderne, il est souvent nécessaire d'exécuter certaines actions selon un planning : envoi de rapports, vidage du cache, synchronisation de données ou lancement de processus en arrière-plan. Le java.util.Timer intégré et le ScheduledExecutorService conviennent pour des scénarios simples, mais pour les systèmes d'entreprise complexes, une solution plus flexible et fiable est nécessaire. Cette solution est Quartz Scheduler — une bibliothèque puissante et open source pour la planification de tâches en Java.



Qu'est-ce que Quartz Scheduler ?



Quartz est une bibliothèque open source qui permet de créer, planifier et exécuter des tâches (Jobs) avec une grande précision. Elle prend en charge :

  • Des déclencheurs flexibles basés sur des expressions cron et des intervalles simples.
  • Le stockage persistant des tâches dans des bases de données (JDBC).
  • Le clustering pour la tolérance aux pannes.
  • L'exécution parallèle et la gestion des threads.
  • L'écoute d'événements (Listeners) pour la surveillance.


Quartz est activement utilisé dans Spring Framework (via le module spring-boot-starter-quartz) et dans les applications d'entreprise.



Installation et configuration



Pour commencer, 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'


Composants principaux de Quartz



Pour comprendre comment fonctionne le planificateur, examinons ses éléments clés :

  • Job — l'interface que votre tâche implémente. Contient la méthode execute(JobExecutionContext context).
  • JobDetail — la description de la tâche (nom, groupe, données).
  • Trigger — la règle de déclenchement (heure, intervalle, cron).
  • Scheduler — le composant principal qui gère toutes les tâches.


Exemple : planificateur simple avec expression cron



Créons une tâche qui affiche un message toutes les 10 secondes.



Étape 1. Implémenter le Job

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

public class SimpleJob implements Job { @Override public void execute(JobExecutionContext context) throws JobExecutionException { System.out.println("Tâche exécutée ! Heure : " + System.currentTimeMillis()); }}


Étape 2. Configurer le Scheduler et lancer

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

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

// 2. Créer un JobDetail JobDetail job = JobBuilder.newJob(SimpleJob.class) .withIdentity("myJob", "group1") .build();

// 3. Créer un Trigger avec une expression cron (toutes les 10 secondes) Trigger trigger = TriggerBuilder.newTrigger() .withIdentity("myTrigger", "group1") .withSchedule(CronScheduleBuilder.cronSchedule("0/10 * * * * ?")) .build();

// 4. Planifier la tâche scheduler.scheduleJob(job, trigger);

// 5. Attendre 30 secondes pour la démonstration try { Thread.sleep(30000); } catch (InterruptedException e) { e.printStackTrace(); }

// 6. Arrêter le planificateur schedule

Recommendations