一.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中的数据被清除时,调用该方法。