Quartz.Net進階之五:TriggerListener 、JobListener 和 SchedulerListener

        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

            不忘初心,繼續努力。事件

相關文章
相關標籤/搜索