Quartz定时任务学习(九)Quartz监听器
Quartz 提供了三種類型的監聽器:監聽 Job 的,監聽 Trigger 的,和監聽 Scheduler 自已的。
本章解釋如何應用每一種類型來更好的管理你的 Quartz 應用,并獲悉到什么事件正在發生。,實現監聽器的方法通用于所有的三種類型。可以分成以下步驟:
?
1.?創建一個 Java 類,實現監聽器接口
2.?用你的應用中特定的邏輯實現監聽器接口的所有方法
3.?注冊監聽器
?
?
?
?
?
JobListener?和?TriggerListener?可被注冊為全局或非全局監聽器。一個全局監聽器能接收到所有的 Job/Trigger 的事件通知。而一個非全局監聽器(或者說是一個標準的監聽器) 只能接收到那些在其上已注冊了監聽器的 Job 或 Triiger 的事件。
?
一、 監聽 Job 事件
org.quartz.JobListener?接口包含一系列的方法,它們會由 Job 在其生命周期中產生的某些關鍵事件時被調用。JobListener分為全局監聽和局部監聽,具體實現如下:
全局:JobListener jobListener = new SimpleJobListener("SimpleJobListener");?????????
??????scheduler.addGlobalJobListener(jobListener);?????????
??????scheduler.start();
局部:JobListener jobListener =new SimpleJobListener("SimpleJobListener");????????????
????? scheduler.addJobListener(jobListener);????????????????????
????? jobDetail.addJobListener(jobListener.getName());???????????????
????? scheduler.scheduleJob(jobDetail, trigger);???????????
????? scheduler.start();
?
注意注冊的方法,另外對于非全局的?JobListener,它應于任何引用到它的?JobDetail?使用?schedulerJob()?或?addJob()?方法注冊之前被注冊。
二、監聽 Trigger 事件
?
org.quartz.TriggerListener?接口也包含一系列給?Scheduler?調用的方法。然而,與?JobListener?有所不同的是,TriggerListener?接口還有關于 Trigger 實例生命周期的方法。
?
監聽的實現和job的監聽基本差不多,對于全局和局部說明:
scheduler.addGlobalTriggerListener(new SimpleMyTriggerListener()); 和
scheduler.addTriggerListener(?triggerListener?);
?
對于局部監聽要注意是的對特定的trigger.addTriggerListener(?triggerListener.getName()?);
添加監聽,注意名字要監聽器的名稱要相同。
和非全局的?JobListener?提到的相同的警告可以應用到這里來;你必須在把它設置給 Trigger 實例并存儲了 Trigger 之前把TriggerListener?加入到 Scheduler 中。
?
三、 監聽 Scheduler 事件
org.quartz.SchedulerListener?接口包含了一系列的回調方法,它們會在 Scheduler 的生命周期中有關鍵事件發生時被調用。
public void startScheduler() throws SchedulerException {??????????
Scheduler scheduler = null;??????????
scheduler = StdSchedulerFactory.getDefaultScheduler();??????????
//添加監聽
SchedulerListener schedulerListener = new SimpleSchedulerListener();?????????
scheduler.addSchedulerListener(schedulerListener);?????????
scheduler.start();?????????
//注冊作業和觸發器????????
JobDetail jobDetail = new JobDetail("PrintInfoJob",Scheduler.DEFAULT_GROUP, MyJob.class);??????????
Trigger trigger = TriggerUtils.makeSecondlyTrigger(5);??????????
trigger.setName("SimpleTrigger");?????????
trigger.setStartTime(new Date());??????????
scheduler.scheduleJob(jobDetail, trigger);??????
}?
在代碼中,Scheduler 創建后是在 Job 注冊之前被啟動的。這就使得在 Job 部署時 jobScheduled() 方法能得到調用。我們也改變了 Trigger 只重復兩次而不是無限的運行。這樣能強制 triggerFinalized() 方法被調用,因為這個 Trigger 不再有機會觸發了。除了這些人為的條件外,使用 SchedulerListener 就和使用 Job 或 Trigger 監聽器是一樣的了。
?
關于監聽類可以查考API具體了解其中方法
轉載于:https://www.cnblogs.com/a757956132/p/4552595.html
總結
以上是生活随笔為你收集整理的Quartz定时任务学习(九)Quartz监听器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: asp.net MVC 路由机制 Rou
- 下一篇: .NET泛型解析(上)