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)