1、介紹
今天開始學習監聽器,就是 Listener,在Quartz.Net 中,主要包含3類的監聽器,主要內容包括:TriggerListener 、JobListener 和 SchedulerListener 這三個東東的內容,這個東西不是很難,內容也不是不少,你們學習起來會很輕鬆。廢話少說,開始咱們今天的學習吧。
2、TriggerListener 、JobListener 和 SchedulerListener
偵聽器是根據調度器中發生的事件建立來執行操做的對象。正如您可能猜到的,TriggerListeners接收與觸發器相關的事件,JobListeners接收與做業相關的事件。
一、與觸發器相關的事件包括:觸發器觸發,觸發錯誤觸發(在本文檔的「觸發器」部分中討論)和觸發器完成(觸發器觸發的做業完成)。
ITriggerListener 接口
html
1 public interface ITriggerListener 2 { 3 string Name { get; } 4 5 Task TriggerFired(ITrigger trigger, IJobExecutionContext context); 6 7 Task<bool> VetoJobExecution(ITrigger trigger, IJobExecutionContext context); 8 9 Task TriggerMisfired(ITrigger trigger); 10 11 Task TriggerComplete(ITrigger trigger, IJobExecutionContext context, int triggerInstructionCode); 12 }
二、與 Job 相關的事件包括:Job 即將執行的通知,以及 Job 完成執行時的通知。
IJobListener 接口學習
1 public interface IJobListener 2 { 3 string Name { get; } 4 5 Task JobToBeExecuted(IJobExecutionContext context); 6 7 Task JobExecutionVetoed(IJobExecutionContext context); 8 9 Task JobWasExecuted(IJobExecutionContext context, JobExecutionException jobException); 10 }
三、使用本身的監聽器
要建立偵聽器,只需建立一個實現 ITriggerListener 或 IJobListener 接口的對象。而後在運行時向調度程序註冊偵聽器,而且必須給偵聽器一個名稱(或者更確切地說,它們必須經過Name屬性來宣傳本身的名稱)。
爲了方便起見,您的類還能夠擴展 JobListenerSupport 或 TriggerListenerSupport 類並簡單地覆蓋您感興趣的事件,而不是實現那些接口。
偵聽器與Matcher一塊兒向調度程序的ListenerManager註冊,Matcher描述偵聽器想要爲哪些做業/觸發器接收事件。
偵聽器在運行時向調度程序註冊,而且不與做業和觸發器一塊兒存儲在JobStore中。這是由於偵聽器一般是與應用程序的集成點。所以,每次應用程序運行時,都須要用調度器從新註冊偵聽器。
增長對特定做業感興趣的 JobListener:
spa
scheduler.ListenerManager.AddJobListener(myJobListener, KeyMatcher<JobKey>.KeyEquals(new JobKey("myJobName", "myJobGroup")));
增長對特定組的全部做業感興趣的 JobListener:.net
scheduler.ListenerManager.AddJobListener(myJobListener, GroupMatcher<JobKey>.GroupEquals("myJobGroup"));
增長對兩個特定組的全部做業感興趣的 JobListener:
code
scheduler.ListenerManager.AddJobListener(myJobListener, OrMatcher<JobKey>.Or(GroupMatcher<JobKey>.GroupEquals("myJobGroup"), GroupMatcher<JobKey>.GroupEquals("yourGroup")));
增長對全部做業感興趣的 JobListener:htm
scheduler.ListenerManager.AddJobListener(myJobListener, GroupMatcher<JobKey>.AnyGroup());
大多數Quartz.NET用戶不使用偵聽器,可是當應用程序要求建立事件通知的須要時,無需Job自己顯式地通知應用程序,偵聽器很是方便。
四、SchedulerListeners
SchedulerListener 與 ITriggerListener 和 IJobListener 很是類似,只是它們接收到調度器自己中的事件的通知——不必定與特定觸發器或做業相關的事件。
與調度程序相關的事件包括:添加做業/觸發器,刪除做業/觸發器,調度程序中的嚴重錯誤,調度程序關閉的通知等。
ISchedulerListener 接口
對象
1 public interface ISchedulerListener 2 { 3 Task JobScheduled(Trigger trigger); 4 5 Task JobUnscheduled(string triggerName, string triggerGroup); 6 7 Task TriggerFinalized(Trigger trigger); 8 9 Task TriggersPaused(string triggerName, string triggerGroup); 10 11 Task TriggersResumed(string triggerName, string triggerGroup); 12 13 Task JobsPaused(string jobName, string jobGroup); 14 15 Task JobsResumed(string jobName, string jobGroup); 16 17 Task SchedulerError(string msg, SchedulerException cause); 18 19 Task SchedulerShutdown(); 20 }
SchedulerListener(調度器偵聽器)在調度器的 ListenerManager 中註冊。SchedulerListener(調度器偵聽器)實際上能夠是實現 ISchedulerListener 接口的任何對象。
增長一個SchedulerListener:
blog
scheduler.ListenerManager.AddSchedulerListener(mySchedListener);
刪除一個SchedulerListener:
接口
scheduler.ListenerManager.RemoveSchedulerListener(mySchedListener);
3、總結
好了,今天就寫到這裏了。你們感受應該很輕鬆,內容很少。仍是老規矩,我把英文原文地址發出來,英文好的能夠直接看英文,理解的會更好。地址以下:https://www.quartz-scheduler.net/documentation/quartz-3.x/tutorial/trigger-and-job-listeners.html
不忘初心,繼續努力。事件