Exemple de JobListener de Quartz 2
Dans ce didacticiel, nous allons vous montrer comment créer unJobListener
, pour suivre l'état des travaux en cours, comme lorsque le travail est terminé.
P.S This example is tested with Quartz 2.1.5
1. Travail de quartz
Tâchez, imprimez un message simple et lancez unJobExecutionException
pour le test.
Fichier: HelloJob.java
package com.example.quartz; 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! 123"); //Throw exception for testing throw new JobExecutionException("Testing Exception"); } }
2. JobListener
Pour créer un JobListener, implémente simplement l’interfaceJobListener
et remplace toutes les méthodes de l’interface.
Fichier: HelloJobListener.java
package com.example.quartz.listener; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; import org.quartz.JobListener; public class HelloJobListener implements JobListener { public static final String LISTENER_NAME = "dummyJobListenerName"; @Override public String getName() { return LISTENER_NAME; //must return a name } // Run this if job is about to be executed. @Override public void jobToBeExecuted(JobExecutionContext context) { String jobName = context.getJobDetail().getKey().toString(); System.out.println("jobToBeExecuted"); System.out.println("Job : " + jobName + " is going to start..."); } // No idea when will run this? @Override public void jobExecutionVetoed(JobExecutionContext context) { System.out.println("jobExecutionVetoed"); } //Run this after job has been executed @Override public void jobWasExecuted(JobExecutionContext context, JobExecutionException jobException) { System.out.println("jobWasExecuted"); String jobName = context.getJobDetail().getKey().toString(); System.out.println("Job : " + jobName + " is finished..."); if (!jobException.getMessage().equals("")) { System.out.println("Exception thrown by: " + jobName + " Exception: " + jobException.getMessage()); } } }
Note
Aucune idée de ce qu'est «jobExecutionVetoed» et quand sera-t-il déclenché? Faites un commentaire si vous savez cela, merci.
3. CronTrigger
Exemple pour attacher au-dessus deHelloJobListener
au planificateur et surveiller les états du travail.
Fichier: CronTriggerExample.java
package com.example.quartz; import org.quartz.CronScheduleBuilder; import org.quartz.JobBuilder; import org.quartz.JobDetail; import org.quartz.JobKey; import org.quartz.Scheduler; import org.quartz.Trigger; import org.quartz.TriggerBuilder; import org.quartz.impl.StdSchedulerFactory; import org.quartz.impl.matchers.KeyMatcher; import com.example.quartz.listener.HelloJobListener; public class CronTriggerExample { public static void main( String[] args ) throws Exception { JobKey jobKey = new JobKey("dummyJobName", "group1"); JobDetail job = JobBuilder.newJob(HelloJob.class) .withIdentity(jobKey).build(); Trigger trigger = TriggerBuilder .newTrigger() .withIdentity("dummyTriggerName", "group1") .withSchedule( CronScheduleBuilder.cronSchedule("0/5 * * * * ?")) .build(); Scheduler scheduler = new StdSchedulerFactory().getScheduler(); //Listener attached to jobKey scheduler.getListenerManager().addJobListener( new HelloJobListener(), KeyMatcher.keyEquals(jobKey) ); //Listener attached to group named "group 1" only. //scheduler.getListenerManager().addJobListener( // new HelloJobListener(), GroupMatcher.jobGroupEquals("group1") //); scheduler.start(); scheduler.scheduleJob(job, trigger); } }
ExécutezCronTriggerExample.java
, voici la sortie.
jobToBeExecuted Job : group1.dummyJobName is going to start... Hello Quartz! 123 jobWasExecuted Job : group1.dummyJobName is started and finished... Exception thrown by: group1.dummyJobName Exception: Testing Exception jobToBeExecuted Job : group1.dummyJobName is going to start... Hello Quartz! 123 jobWasExecuted Job : group1.dummyJobName is started and finished... Exception thrown by: group1.dummyJobName Exception: Testing Exception
Télécharger le code source
Téléchargez-le -Quartz2-JobListener-Example.zip (13 Ko)