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

            不忘初心,继续努力。事件

相关文章
相关标签/搜索