五、LISTENER监听器
监听器
Quartz 的监听器有Job监听器,Trigger监听器, Scheduler监听器,对不同层面进行监控。 实际业务用的较多的是Job监听器,用于监听器是否执行了,其他的用的相对较少,本知识主要讲解Job的。
MailJobListener
MailJobListener 实现了 JobListener 接口,就必须实现如图所示的4个方法。
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
package com.how2java;import org.quartz.JobExecutionContext;import org.quartz.JobExecutionException;import org.quartz.JobListener;public class MailJobListener implements JobListener { @Override public String getName() { // TODO Auto-generated method stub return "listener of mail job"; } @Override public void jobExecutionVetoed(JobExecutionContext context) { // TODO Auto-generated method stub System.out.println("取消执行:\t "+context.getJobDetail().getKey()); } @Override public void jobToBeExecuted(JobExecutionContext context) { // TODO Auto-generated method stub System.out.println("准备执行:\t "+context.getJobDetail().getKey()); } @Override public void jobWasExecuted(JobExecutionContext context, JobExecutionException arg1) { // TODO Auto-generated method stub System.out.println("执行结束:\t "+context.getJobDetail().getKey()); System.out.println(); }} |
TestQuartz
修改TestQuartz,于34-36行增加监听器
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
package com.how2java;import static org.quartz.JobBuilder.newJob;import static org.quartz.SimpleScheduleBuilder.simpleSchedule;import static org.quartz.TriggerBuilder.newTrigger;import org.quartz.JobDetail;import org.quartz.JobKey;import org.quartz.Scheduler;import org.quartz.Trigger;import org.quartz.impl.StdSchedulerFactory;import org.quartz.impl.matchers.KeyMatcher;public class TestQuartz { public static void main(String[] args) throws Exception{ //创建调度器 Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler(); //定义一个触发器 Trigger trigger = newTrigger().withIdentity("trigger1", "group1") //定义名称和所属的租 .startNow() .withSchedule(simpleSchedule() .withIntervalInSeconds(2) //每隔2秒执行一次 .withRepeatCount(10)) //总共执行11次(第一次执行不基数) .build(); //定义一个JobDetail JobDetail mailJob = newJob(MailJob.class) //指定干活的类MailJob .withIdentity("mailjob1", "mailgroup") //定义任务名称和分组 .usingJobData("email", "admin@10086.com") //定义属性 .build(); //增加Job监听 MailJobListener mailJobListener= new MailJobListener(); KeyMatcher<JobKey> keyMatcher = KeyMatcher.keyEquals(mailJob.getKey()); scheduler.getListenerManager().addJobListener(mailJobListener, keyMatcher); //调度加入这个job scheduler.scheduleJob(mailJob, trigger); //启动 scheduler.start(); //等待20秒,让前面的任务都执行完了之后,再关闭调度器 Thread.sleep(20000); scheduler.shutdown(true); }} |

下载地址:http://download.how2j.cn/1725/quartz.rar
浙公网安备 33010602011771号