Beispiel für Quartz 2 JobListener
In diesem Lernprogramm zeigen wir Ihnen, wie SieJobListener
erstellen, um den Status laufender Jobs zu verfolgen, z. B. wenn der Job beendet ist.
P.S This example is tested with Quartz 2.1.5
1. Quartz Job
Job, drucke eine einfache Nachricht und wirf einJobExecutionException
zum Testen.
Datei: 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
Um einen JobListener zu erstellen, implementieren Sie einfach dieJobListener
-Schnittstelle und überschreiben Sie alle Methoden der Schnittstelle.
Datei: 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
Keine Ahnung, was "jobExecutionVetoed" ist und wann es ausgelöst wird? Kommentieren Sie, wenn Sie das wissen, danke.
3. CronTrigger
Beispiel zum Anhängen von überHelloJobListener
an den Scheduler und zum Überwachen des Auftragsstatus.
Datei: 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); } }
Führen SieCronTriggerExample.java
aus. Hier ist die Ausgabe.
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
Quellcode herunterladen
Laden Sie es herunter -Quartz2-JobListener-Example.zip (13 KB)