日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Quartz定时任务学习(九)Quartz监听器

發布時間:2025/6/17 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Quartz定时任务学习(九)Quartz监听器 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Quartz 提供了三種類型的監聽器:監聽 Job 的,監聽 Trigger 的,和監聽 Scheduler 自已的。

本章解釋如何應用每一種類型來更好的管理你的 Quartz 應用,并獲悉到什么事件正在發生。,實現監聽器的方法通用于所有的三種類型??梢苑殖梢韵虏襟E:

?


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监听器的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。