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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

Quartz-SchedulerListener解读

發布時間:2025/3/21 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Quartz-SchedulerListener解读 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 概述
  • SchedulerListener接口方法解讀
  • 示例
  • 示例源碼

概述

SchedulerListener 是在 Scheduler 級別的事件產生時得到通知,不管是增加還是移除 Scheduler 中的 Job,或者是 Scheduler 遭遇到了嚴重的錯誤時。那些事件多是關于對 Scheduler 管理的,而不是專注于 Job 或 Trigger 的。

org.quartz.SchedulerListener 接口包含了一系列的回調方法,它們會在 Scheduler 的生命周期中有關鍵事件發生時被調用。


SchedulerListener接口方法解讀

我們先看下SchedulerListener的源碼

public interface SchedulerListener { public void jobScheduled(Trigger trigger); public void jobUnscheduled(String triggerName, String triggerGroup); public void triggerFinalized(Trigger trigger); public void triggersPaused(String triggerName, String triggerGroup); public void triggersResumed(String triggerName,String triggerGroup); public void jobsPaused(String jobName, String jobGroup); public void jobsResumed(String jobName, String jobGroup); public void schedulerError(String msg, SchedulerException cause); public void schedulerShutdown(); }
  • jobScheduled() 和 jobUnscheduled():Scheduler 在有新的 JobDetail 部署或卸載時調用這兩個中的相應方法。

  • triggerFinalized() :當一個 Trigger 來到了再也不會觸發的狀態時調用這個方法。除非這個 Job 已設置成了持久性,否則它就會從 Scheduler 中移除。

  • triggersPaused():Scheduler 調用這個方法是發生在一個 Trigger 或 Trigger 組被暫停時。假如是 Trigger 組的話,triggerName 參數將為 null。

  • triggersResumed():Scheduler 調用這個方法是發生成一個 Trigger 或 Trigger 組從暫停中恢復時。假如是 Trigger 組的話,triggerName 參數將為 null。

  • jobsPaused():當一個或一組 JobDetail 暫停時調用這個方法。

  • jobsResumed():當一個或一組 Job 從暫停上恢復時調用這個方法。假如是一個 Job 組,jobName 參數將為 null。

  • schedulerError():在 Scheduler 的正常運行期間產生一個嚴重錯誤時調用這個方法。錯誤的類型會各式的,但是下面列舉了一些錯誤例子:

初始化 Job 類的問題
試圖去找到下一 Trigger 的問題
JobStore 中重復的問題
數據存儲連接的問題

你可以使用 SchedulerException 的 getErrorCode() 或者 getUnderlyingException() 方法或獲取到特定錯誤的更詳盡的信息。

  • schedulerShutdown():Scheduler 調用這個方法用來通知 SchedulerListener Scheduler 將要被關閉。

示例

Job復用TriggerListener中的SimpleJob1

詳見 Quartz-TriggerListener解讀

自定義SchedulerListener

package com.xgj.quartz.quartzItself.listener.schedulerListener;import org.quartz.JobDetail; import org.quartz.JobKey; import org.quartz.SchedulerException; import org.quartz.SchedulerListener; import org.quartz.Trigger; import org.quartz.TriggerKey;public class MySchedulerListener implements SchedulerListener {@Overridepublic void jobScheduled(Trigger trigger) {System.out.println("MySchedulerListener jobScheduled trigger");}@Overridepublic void jobUnscheduled(TriggerKey triggerKey) {System.out.println("MySchedulerListener jobScheduled triggerKey");}@Overridepublic void triggerFinalized(Trigger trigger) {System.out.println("MySchedulerListener triggerFinalized");}@Overridepublic void triggerPaused(TriggerKey triggerKey) {System.out.println("MySchedulerListener triggerPaused");}@Overridepublic void triggersPaused(String triggerGroup) {System.out.println("MySchedulerListener triggersPaused");}@Overridepublic void triggerResumed(TriggerKey triggerKey) {System.out.println("MySchedulerListener triggerResumed triggerKey");}@Overridepublic void triggersResumed(String triggerGroup) {System.out.println("MySchedulerListener triggerResumed triggerGroup");}@Overridepublic void jobAdded(JobDetail jobDetail) {System.out.println("MySchedulerListener jobAdded");}@Overridepublic void jobDeleted(JobKey jobKey) {System.out.println("MySchedulerListener jobDeleted");}@Overridepublic void jobPaused(JobKey jobKey) {System.out.println("MySchedulerListener jobPaused jobKey");}@Overridepublic void jobsPaused(String jobGroup) {System.out.println("MySchedulerListener jobsPaused jobGroup");}@Overridepublic void jobResumed(JobKey jobKey) {System.out.println("MySchedulerListener jobResumed jobKey");}@Overridepublic void jobsResumed(String jobGroup) {System.out.println("MySchedulerListener jobsResumed jobGroup");}@Overridepublic void schedulerError(String msg, SchedulerException cause) {System.out.println("MySchedulerListener schedulerError");}@Overridepublic void schedulerInStandbyMode() {System.out.println("MySchedulerListener schedulerInStandbyMode");}@Overridepublic void schedulerStarted() {System.out.println("MySchedulerListener schedulerStarted");}@Overridepublic void schedulerStarting() {System.out.println("MySchedulerListener schedulerStarting");}@Overridepublic void schedulerShutdown() {System.out.println("MySchedulerListener schedulerShutdown");}@Overridepublic void schedulerShuttingdown() {System.out.println("MySchedulerListener schedulerShuttingdown");}@Overridepublic void schedulingDataCleared() {System.out.println("MySchedulerListener schedulingDataCleared");}}

調度類

package com.xgj.quartz.quartzItself.listener.schedulerListener;import static org.quartz.JobBuilder.newJob; import static org.quartz.TriggerBuilder.newTrigger;import org.quartz.JobDetail; import org.quartz.Scheduler; import org.quartz.SchedulerFactory; import org.quartz.SchedulerListener; import org.quartz.SchedulerMetaData; import org.quartz.Trigger; import org.quartz.impl.StdSchedulerFactory;import com.xgj.quartz.quartzItself.listener.triggerListener.SimpleJob1;public class SchedulerListenerDemo {public static void main(String[] args) throws Exception {System.out.println("------- 初始化 ----------------------");// SchedulerSchedulerFactory schedulerFactory = new StdSchedulerFactory();Scheduler scheduler = schedulerFactory.getScheduler();// 添加監聽器SchedulerListener schedulerListener = new MySchedulerListener();scheduler.getListenerManager().addSchedulerListener(schedulerListener);// JobJobDetail job = newJob(SimpleJob1.class).withIdentity("job1", "group1").build();// TirggerTrigger trigger = newTrigger().withIdentity("trigger1", "group1").startNow().build();// 將job任務加入到調度器scheduler.scheduleJob(job, trigger);// 開始任務System.out.println("------- 開始執行調度器 Scheduler ----------------");scheduler.start();try {System.out.println("------- 等待 30 秒... --------------");Thread.sleep(30L * 1000L);} catch (Exception e) {e.printStackTrace();}scheduler.shutdown(true);System.out.println("------- 關閉調度器 -----------------");SchedulerMetaData metaData = scheduler.getMetaData();System.out.println("~~~~~~~~~~ 執行了 "+ metaData.getNumberOfJobsExecuted() + " 個 jobs.");} }

運行結果

------- 初始化 ---------------------- INFO StdSchedulerFactory - Using default implementation for ThreadExecutor INFO SimpleThreadPool - Job execution threads will use class loader of thread: main INFO SchedulerSignalerImpl - Initialized Scheduler Signaller of type: class org.quartz.core.SchedulerSignalerImpl INFO QuartzScheduler - Quartz Scheduler v.2.2.3 created. INFO RAMJobStore - RAMJobStore initialized. INFO QuartzScheduler - Scheduler meta-data: Quartz Scheduler (v2.2.3) 'DefaultQuartzScheduler' with instanceId 'NON_CLUSTERED'Scheduler class: 'org.quartz.core.QuartzScheduler' - running locally.NOT STARTED.Currently in standby mode.Number of jobs executed: 0Using thread pool 'org.quartz.simpl.SimpleThreadPool' - with 10 threads.Using job-store 'org.quartz.simpl.RAMJobStore' - which does not support persistence. and is not clustered.INFO StdSchedulerFactory - Quartz scheduler 'DefaultQuartzScheduler' initialized from default resource file in Quartz package: 'quartz.properties' INFO StdSchedulerFactory - Quartz scheduler version: 2.2.3 MySchedulerListener jobAdded MySchedulerListener jobScheduled trigger ------- 開始執行調度器 Scheduler ---------------- MySchedulerListener schedulerStarting INFO QuartzScheduler - Scheduler DefaultQuartzScheduler_$_NON_CLUSTERED started. MySchedulerListener schedulerStarted ------- 等待 30... --------------Job1 - 任務key group1.job1執行時間:2017-11-16 22:14:33 MySchedulerListener triggerFinalized MySchedulerListener jobDeleted INFO QuartzScheduler - Scheduler DefaultQuartzScheduler_$_NON_CLUSTERED shutting down. INFO QuartzScheduler - Scheduler DefaultQuartzScheduler_$_NON_CLUSTERED paused. MySchedulerListener schedulerInStandbyMode MySchedulerListener schedulerShuttingdown MySchedulerListener schedulerShutdown INFO QuartzScheduler - Scheduler DefaultQuartzScheduler_$_NON_CLUSTERED shutdown complete. ------- 關閉調度器 ----------------- ~~~~~~~~~~ 執行了 1 個 jobs.

示例源碼

代碼已托管到Github—> https://github.com/yangshangwei/SpringMaster

總結

以上是生活随笔為你收集整理的Quartz-SchedulerListener解读的全部內容,希望文章能夠幫你解決所遇到的問題。

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