五、LISTENER监听器

监听器

Quartz 的监听器有Job监听器,Trigger监听器, Scheduler监听器,对不同层面进行监控。 实际业务用的较多的是Job监听器,用于监听器是否执行了,其他的用的相对较少,本知识主要讲解Job的。
 

MailJobListener

MailJobListener 实现了 JobListener 接口,就必须实现如图所示的4个方法。
MailJobListener
 
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

posted on 2019-01-04 15:27  我是司  阅读(230)  评论(0)    收藏  举报

导航