zoukankan      html  css  js  c++  java
  • Quartz.Net进阶之五:TriggerListener 、JobListener 和 SchedulerListener

            一、介绍

                今天开始学习监听器,就是 Listener,在Quartz.Net 中,主要包含3类的监听器,主要内容包括:TriggerListener 、JobListener 和 SchedulerListener 这三个东东的内容,这个东西不是很难,内容也不是很多,大家学习起来会很轻松。废话少说,开始我们今天的学习吧。

            二、TriggerListener 、JobListener 和 SchedulerListener

                侦听器是根据调度器中发生的事件创建来执行操作的对象。正如您可能猜到的,TriggerListeners接收与触发器相关的事件,JobListeners接收与作业相关的事件。

                1、与触发器相关的事件包括:触发器触发,触发错误触发(在本文档的“触发器”部分中讨论)和触发器完成(触发器触发的作业完成)。

                ITriggerListener 接口

     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             }


                2、与 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             } 


                3、使用自己的监听器

                要创建侦听器,只需创建一个实现 ITriggerListener 或 IJobListener 接口的对象。然后在运行时向调度程序注册侦听器,并且必须给侦听器一个名称(或者更确切地说,它们必须通过Name属性来宣传自己的名称)。

                为了方便起见,您的类还可以扩展 JobListenerSupport 或 TriggerListenerSupport 类并简单地覆盖您感兴趣的事件,而不是实现那些接口。

                侦听器与Matcher一起向调度程序的ListenerManager注册,Matcher描述侦听器想要为哪些作业/触发器接收事件。

                侦听器在运行时向调度程序注册,并且不与作业和触发器一起存储在JobStore中。这是因为侦听器通常是与应用程序的集成点。因此,每次应用程序运行时,都需要用调度器重新注册侦听器。

                增加对特定作业感兴趣的 JobListener:

                    scheduler.ListenerManager.AddJobListener(myJobListener, KeyMatcher<JobKey>.KeyEquals(new JobKey("myJobName", "myJobGroup")));


                增加对特定组的所有作业感兴趣的 JobListener:

                    scheduler.ListenerManager.AddJobListener(myJobListener, GroupMatcher<JobKey>.GroupEquals("myJobGroup"));


                增加对两个特定组的所有作业感兴趣的 JobListener:

                    scheduler.ListenerManager.AddJobListener(myJobListener,
        OrMatcher<JobKey>.Or(GroupMatcher<JobKey>.GroupEquals("myJobGroup"), GroupMatcher<JobKey>.GroupEquals("yourGroup")));


                增加对所有作业感兴趣的 JobListener:

                    scheduler.ListenerManager.AddJobListener(myJobListener, GroupMatcher<JobKey>.AnyGroup());


                大多数Quartz.NET用户不使用侦听器,但是当应用程序要求创建事件通知的需要时,无需Job本身显式地通知应用程序,侦听器非常方便。

                4、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:

                    scheduler.ListenerManager.AddSchedulerListener(mySchedListener);


                删除一个SchedulerListener:
               

                    scheduler.ListenerManager.RemoveSchedulerListener(mySchedListener);



            三、总结

                好了,今天就写到这里了。大家感觉应该很轻松,内容不多。还是老规矩,我把英文原文地址发出来,英文好的可以直接看英文,理解的会更好。地址如下:https://www.quartz-scheduler.net/documentation/quartz-3.x/tutorial/trigger-and-job-listeners.html

                不忘初心,继续努力。

  • 相关阅读:
    NetCore基于Consul+Ocelot+Docker+Jenkin搭建微服务架构
    Linux文档整理之【Jenkins+Docker自动化部署.Net Core】
    分布式事务
    redis
    pandas读取Excel
    centos7上用docker搭建简单的前后端分离项目
    CENTOS 设置swap 并让系统使用它
    MikroTik RouterOS安装chr授权到阿里云虚拟机(转)
    IDEA使用External Tools配置来查看javap反编译字节码
    【k8s】metrics-server
  • 原文地址:https://www.cnblogs.com/PatrickLiu/p/10193973.html
Copyright © 2011-2022 走看看