zoukankan      html  css  js  c++  java
  • [译]Quartz.NET 框架 教程(中文版)2.2.x 之第七课 触发监听器和作业任务监听器

    第七课:触发监听器和作业任务监听器

            监听器是在调度器中基于事件机制执行操作的对象。你大概可以猜到,触发监听器接收响应跟触发器有关的事件,作业任务监听器接收响应跟作业任务有关的事件。

            跟触发器有关的事件包括:触发器被触发,触发器触发失败(在触发器课程中讨论过),以及触发器触发完成(触发器完成后作业任务开始运行)。

     1 public interface ITriggerListener
     2 {
     3      string Name { get; }
     4 
     5      void TriggerFired(ITrigger trigger, IJobExecutionContext context);
     6 
     7      bool VetoJobExecution(ITrigger trigger, IJobExecutionContext context);
     8 
     9      void TriggerMisfired(ITrigger trigger);
    10 
    11      void TriggerComplete(ITrigger trigger, IJobExecutionContext context, int triggerInstructionCode);
    12 }

     跟作业任务相关的事件包括:job即将被执行的通知和job执行完成的通知事件。

    The IJobListener Interface

     1 public interface IJobListener
     2 {
     3     string Name { get; }
     4 
     5     void JobToBeExecuted(IJobExecutionContext context);
     6 
     7     void JobExecutionVetoed(IJobExecutionContext context);
     8 
     9     void JobWasExecuted(IJobExecutionContext context, JobExecutionException jobException);
    10 } 

    使用自己开发的监听器


           要创建一个监听器,可以简单地创建一个实现org.quartz.TriggerListener或org.quartz.JobListener接口的对象即可。监听器会在运行期间注册到调度器中,并且必须要给定监听器名(或者更确切地说,监听器会调用getName方法获取自己的名字)。

           为了方便使用,监听器除了实现这些接口,你还可以继承ITriggerListener 和IJobListener 类,可以只重写你感兴趣的事件方法。

           监听器注册到调度器中的监听器管理类时还携带着一个匹配器,这个匹配器描述了作业任务和触发器的监听器想接收的事件。

           监听器在运行期间注册到调度中,但是不会把作业任务和触发器存储到JobStore中。那是因为监听器在你的应用中通常是一些点的集合。因此,每次应用运行时,监听器都需要重新在调度器中注册。

    在一个指定的作业任务中添加Job监听器:

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

    在你感兴趣的一个作业组中所有的作业任务添加上Job监听器:

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


     在你感兴趣的两个作业组中所有的作业任务添加上Job监听器:
    scheduler.ListenerManager.AddJobListener(myJobListener,
       

    OrMatcher<JobKey>.Or(GroupMatcher<JobKey>.GroupEquals("myJobGroup"), GroupMatcher<JobKey>.GroupEquals("yourGroup")));


       在所有作业中添加Job监听器:

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

            注册Trigger监听器也用同样的方法。

        大部分的Quartz用户都不会用到监听器,但是当应用要求创建需要的事件通知时,而没有Job实例去通知应用时,使用监听器非常方便。




     

     

     

  • 相关阅读:
    PHPExcel读取excel03/07版到数组
    firefox 自定义快捷键
    phpstorm 自定义函数配置
    解决FPDF报错:FPDF error: Not a JPEG file / FPDF error: Not a PNG file
    mysql学习笔记
    定时备份服务器数据库(借助windows任务计划以及mysqldump)
    discuz 注册用户用到的几个表
    phpstorm配置取消掉63342
    discuz random函数
    discuz X3.2邮箱非必填
  • 原文地址:https://www.cnblogs.com/linzhao126/p/4528519.html
Copyright © 2011-2022 走看看