zoukankan      html  css  js  c++  java
  • Quartz.NET

    译者注:
    目录在这 Quartz.NET 3.x 教程
    原文在这 Lesson 7: TriggerListeners and JobListeners

    监听器是为调度程序中发生的事件执行操作而创建的对象. 如你所猜, TriggerListeners 接收和触发器相关的事件, JobListeners 接收作业相关的事件.

    触发器相关的事件包括: 触发器触发, 触发器误触发 (在本文档的 "触发器" 部分有说到), 以及触发器完成 (触发器触发的作业已完成).

    ITriggerListener 接口:

    public interface ITriggerListener
    {
        string Name { get; }
    
        Task TriggerFired(ITrigger trigger, IJobExecutionContext context);
    
        Task<bool> VetoJobExecution(ITrigger trigger, IJobExecutionContext context);
    
        Task TriggerMisfired(ITrigger trigger);
        
        Task TriggerComplete(ITrigger trigger, IJobExecutionContext context, int triggerInstructionCode);
    }
    

    与作业相关的事件包括: 作业即将执行的通知, 以及作业已完成执行的通知.

    IJobListener 接口

    public interface IJobListener
    {
        string Name { get; }
    
        Task JobToBeExecuted(IJobExecutionContext context);
    
        Task JobExecutionVetoed(IJobExecutionContext context);
    
        Task JobWasExecuted(IJobExecutionContext context, JobExecutionException jobException);
    }
    

    使用自己实现的监听器

    要创建一个监听器, 只需要创建一个对象并实现 ITriggerListener 和/或 IJobListener 接口. 然后在调度程序运行时监听器会被注册, 并且必须被赋予一个名称 (更确切的说, 她们必须通过名称属性来公布自己名称).

    为了方便起见, 您的类也可以扩展 JobListenerSupport 或 TriggerListenerSupport 并简单重写您感兴趣的事件, 而不用实现这些接口.

    监听器会和一个匹配器一起注册到调度程序的 ListenerManager 中该匹配器描述了监听器希望接收哪个作业/触发器事件.

    监听器在调度程序运行时被注册, 并且不与作业和触发器一样存储在 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 的监听器, 但是当应用程序有创建事件通知需求时监听器非常好用, 除非作业本身没有明确的通知应用程序 .

  • 相关阅读:
    本周学习进度
    梦断代码阅读笔记01
    站立会议06(第二期)
    计算机软件方面的面试题?
    算法Bai-Piao
    哈希表
    关于编写代码的一些建议
    使用Promise
    Lintcode
    搭建Android浏览器壳子
  • 原文地址:https://www.cnblogs.com/taadis/p/quartz-3-x-tutorial-trigger-and-job-listeners.html
Copyright © 2011-2022 走看看