• 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 的监听器, 但是当应用程序有创建事件通知需求时监听器非常好用, 除非作业本身没有明确的通知应用程序 .

  • 相关阅读:
    目标跟踪之meanshift---均值漂移搞起2000过时的
    目标检测之人头---人头检测,安全帽检测,头盔检测,人流检测
    图像处理之opencv---常用函数
    图像处理之滤波---gabor
    图像处理之滤波---滤波在游戏中的应用boxfilter
    模式识别之不变矩---SIFT和SURF的比较
    Java容器集合类的区别用法
    java读取txt字符串挨个写入int数组
    阶段3 3.SpringMVC·_06.异常处理及拦截器_1 SpringMVC异常处理之分析和搭建环境
    阶段3 3.SpringMVC·_06.异常处理及拦截器_4 SpringMVC拦截器之介绍和搭建环境
  • 原文地址:https://www.cnblogs.com/taadis/p/quartz-3-x-tutorial-trigger-and-job-listeners.html
Copyright © 2020-2023  润新知