Loading

Quartz(5):quartz监听器

一.JobListener

(1)getName:获取该JobListener的名称

(2)jobToBeExecuted:scheduler在JobDetail将要被执行时调用该方法

(3)jobExecutionVetoed:scheduler在JobDetail即将被执行,但又被TriggerListener否决时调用。

(4)jobWasExcuted:scheduler在JobDetail被执行后调用该方法

自定义一个监听器:

public class MyJobListener implements JobListener {
    @Override
    public String getName() {
        return this.getClass().getName();
    }

    @Override
    public void jobToBeExecuted(JobExecutionContext context) {
        System.out.println("scheduler在JobDetail将要被执行");
    }

    @Override
    public void jobExecutionVetoed(JobExecutionContext context) {
        System.out.println("scheduler在JobDetail即将被执行,但又被TriggerListener否决");
    }

    @Override
    public void jobWasExecuted(JobExecutionContext context, JobExecutionException jobException) {
        System.out.println("scheduler在JobDetail被执行后");
    }
}

 加入监听器:

        //创建并注册一个全局job listener
        //     public void addJobListener(JobListener jobListener, Matcher<JobKey> matcher); 添加监听器的方法
        //scheduler.getListenerManager().addJobListener(new MyJobListener(), EverythingMatcher.allJobs());//
        //创建并注册一个特定组job listener
        //scheduler.getListenerManager().addJobListener(new MyJobListener(), GroupMatcher.groupContains("group12"));//组监听器匹配器
        //创建并注册一个局部job listener
        scheduler.getListenerManager().addJobListener(new MyJobListener(), KeyMatcher.keyEquals(JobKey.jobKey("job1","group1")));

/*        public static JobKey jobKey(String name) {
            return new JobKey(name, null);
        }

        public static JobKey jobKey(String name, String group) {
            return new JobKey(name, group);
        }*/

 运行结果:

 二.TriggerListener

与JobListenerListener用法类似,不过多介绍

(1) getName方法:获取触发器的名称
(2) triggerFired方法:当与监听器相关联的Trigger被触发,Job上的execute()方法将被执行时,Scheduler就调用该方法。
(3) vetoJobExecution方法:在 Trigger 触发后,Job 将要被执行时由 Scheduler 调用这个方法。TriggerListener 给了一个选择去否决 Job 的执行。假如这个方法返回 true,这个 Job 将不会为此次 Trigger 触发而得到执行。
(4) triggerMisfired方法:Scheduler 调用这个方法是在 Trigger 错过触发时。你应该关注此方法中持续时间长的逻辑:在出现许多错过触发的 Trigger 时,长逻辑会导致骨牌效应。你应当保持这上方法尽量的小。
(5) triggerComplete方法:Trigger 被触发并且完成了 Job 的执行时,Scheduler 调用这个方法。
scheduler.getListenerManager().addTriggerListener(new MyTriggerListener(),EverythingMatcher.allTriggers());

三.SchedulerListener

使用方法与JobListener类似

1) jobScheduled方法:用于部署JobDetail时调用

2) jobUnscheduled方法:用于卸载JobDetail时调用

3) triggerFinalized方法:当一个 Trigger 来到了再也不会触发的状态时调用这个方法。除非这个 Job 已设置成了持久性,否则它就会从 Scheduler 中移除。

4) triggersPaused方法:Scheduler 调用这个方法是发生在一个 Trigger 或 Trigger 组被暂停时。假如是 Trigger 组的话,triggerName 参数将为 null。

5) triggersResumed方法:Scheduler 调用这个方法是发生成一个 Trigger 或 Trigger 组从暂停中恢复时。假如是 Trigger 组的话,假如是 Trigger 组的话,triggerName 参数将为 null。参数将为 null。
6) jobsPaused方法:当一个或一组 JobDetail 暂停时调用这个方法。
7) jobsResumed方法:当一个或一组 Job 从暂停上恢复时调用这个方法。假如是一个 Job 组,jobName 参数将为 null。
8) schedulerError方法:在 Scheduler 的正常运行期间产生一个严重错误时调用这个方法。
9) schedulerStarted方法:当Scheduler 开启时,调用该方法
10) schedulerInStandbyMode方法: 当Scheduler处于StandBy模式时,调用该方法
11) schedulerShutdown方法:当Scheduler停止时,调用该方法
12) schedulingDataCleared方法:当Scheduler中的数据被清除时,调用该方法。

posted @ 2020-04-03 18:39  秋风飒飒吹  阅读(355)  评论(0编辑  收藏  举报