Tutoriel du planificateur Quartz 2
Quartz, cadre de travail du planificateur d'entreprise, pour aider l'application Java à planifier un travail / une tâche à exécuter à une date et une heure spécifiées.
Ce tutoriel vous montre comment développer un travail de planificateur à l'aide de la dernière bibliothèque Quartz 2.1.5.
Note
Quartz 2 implique une modification importante de l'API, lisez ceci pourolder Quartz 1.6.3 example.
1. Télécharger Quartz
Vous pouvez obtenir la bibliothèque Quartz à partir deofficial website ou du référentiel central Maven
Fichier: pom.xml
org.quartz-scheduler quartz 2.1.5
Note
Pour déployer Quartz sur un serveur d'applications comme JBoss, oracle ou weblogic, vous devrez peut-être ajouter une dépendance Quartz, lisez ceciguide.
2. Travail de quartz
Le travail de quartz est défini ce que vous voulez exécuter?
Fichier: HelloJob
package com.example.common; import org.quartz.Job; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; public class HelloJob implements Job { public void execute(JobExecutionContext context) throws JobExecutionException { System.out.println("Hello Quartz!"); } }
3. Déclencheur à quartz
Le déclencheur Quartz est défini lorsque le Quartz exécutera le travail de Quartz ci-dessus?
Comme l'ancien Quartz, il existe toujours deux types de déclencheurs dans Quartz 2, mais avec les API modifiées:
-
SimpleTrigger - Permet de régler l'heure de début, l'heure de fin, l'intervalle de répétition.
-
CronTrigger - Permet à l'expression cron Unix de spécifier les dates et heures d'exécution de votre travail.
SimpleTrigger - Exécuté toutes les 5 secondes.
Trigger trigger = TriggerBuilder .newTrigger() .withIdentity("dummyTriggerName", "group1") .withSchedule( SimpleScheduleBuilder.simpleSchedule() .withIntervalInSeconds(5).repeatForever()) .build();
CronTrigger - Exécuté toutes les 5 secondes.
Trigger trigger = TriggerBuilder .newTrigger() .withIdentity("dummyTriggerName", "group1") .withSchedule( CronScheduleBuilder.cronSchedule("0/5 * * * * ?")) .build();
Note
Lisez ceofficial documentation pour plus d'exemples de déclencheurs Quartz 2.
4. Planificateur
La classe Scheduler relie à la fois «Job» et «Trigger» et l'exécute.
Scheduler scheduler = new StdSchedulerFactory().getScheduler(); scheduler.start(); scheduler.scheduleJob(job, trigger);
5. Exemple complet
Quartz 2 exemples complets avec SimpleTrigger et CronTrigger.
SimpleTrigger example - Exécute très 5 secondes.
package com.example.quartz; import org.quartz.JobBuilder; import org.quartz.JobDetail; import org.quartz.Scheduler; import org.quartz.SimpleScheduleBuilder; import org.quartz.Trigger; import org.quartz.TriggerBuilder; import org.quartz.impl.StdSchedulerFactory; public class SimpleTriggerExample { public static void main(String[] args) throws Exception { // Quartz 1.6.3 // JobDetail job = new JobDetail(); // job.setName("dummyJobName"); // job.setJobClass(HelloJob.class); JobDetail job = JobBuilder.newJob(HelloJob.class) .withIdentity("dummyJobName", "group1").build(); //Quartz 1.6.3 // SimpleTrigger trigger = new SimpleTrigger(); // trigger.setStartTime(new Date(System.currentTimeMillis() + 1000)); // trigger.setRepeatCount(SimpleTrigger.REPEAT_INDEFINITELY); // trigger.setRepeatInterval(30000); // Trigger the job to run on the next round minute Trigger trigger = TriggerBuilder .newTrigger() .withIdentity("dummyTriggerName", "group1") .withSchedule( SimpleScheduleBuilder.simpleSchedule() .withIntervalInSeconds(5).repeatForever()) .build(); // schedule it Scheduler scheduler = new StdSchedulerFactory().getScheduler(); scheduler.start(); scheduler.scheduleJob(job, trigger); } }
CronTrigger example - Idem, exécutez le travail toutes les 5 secondes.
package com.example.quartz; import org.quartz.CronScheduleBuilder; import org.quartz.JobBuilder; import org.quartz.JobDetail; import org.quartz.Scheduler; import org.quartz.Trigger; import org.quartz.TriggerBuilder; import org.quartz.impl.StdSchedulerFactory; public class CronTriggerExample { public static void main( String[] args ) throws Exception { //Quartz 1.6.3 //JobDetail job = new JobDetail(); //job.setName("dummyJobName"); //job.setJobClass(HelloJob.class); JobDetail job = JobBuilder.newJob(HelloJob.class) .withIdentity("dummyJobName", "group1").build(); //Quartz 1.6.3 //CronTrigger trigger = new CronTrigger(); //trigger.setName("dummyTriggerName"); //trigger.setCronExpression("0/5 * * * * ?"); Trigger trigger = TriggerBuilder .newTrigger() .withIdentity("dummyTriggerName", "group1") .withSchedule( CronScheduleBuilder.cronSchedule("0/5 * * * * ?")) .build(); //schedule it Scheduler scheduler = new StdSchedulerFactory().getScheduler(); scheduler.start(); scheduler.scheduleJob(job, trigger); } }
Télécharger le code source
Téléchargez-le -Quartz2Example.zip (10kb)