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 Aussi dans la bibliothèque
Client Redis pour PHP : Predis et PhpRedis – connexion et exemples
MongoDB.Driver C# (.NET) : guide complet avec exemples
doctest C++ : guide complet avec exemples et tutoriel