开发环境

.net 4.5.1
quartz.dll v2.4.1.0 依赖下面的dll
Common.Loggin.dll v3.3.1.0 依赖下面的dll
Common.Loggin.Core.dll v3.3.1.0

Quartz核心概念

1、Job 表示一个工作任务,业务代码的执行入口,业务代码需要继承Quartz.IJob接口并实现Execute方法,此方法即业务代码的入口函数
2、JobDetail 表示一个上体的可执行的调度程序
3、Trigger 代表一个调度参数的配置,调度方案与执行计划
4、Scheduler 代表一个调度容器,可以注册多个JobDetail和Trigger
5、SchedulerPlugin 调度插件,自定义插件需要继承 Quartz.Spi.ISchedulerPlugin
6、SchedulerListener 调度监听器,自定义需要继承 Quartz.ISchedulerListener
7、TriggerListener 触发器监听器,自定义需要继承 Quartz.ITriggerListener
8、JobListener 工作任务监听器,自定义需要继承 Quartz.IJobListener

插件开发

常见开发插件有三种类型
1、SchedulerPlugin
2、SchedulerListener
3、TriggerListener
4、JobListener

一、SchedulerPlugin
using Quartz;
using Quartz.Spi;
namespace QuartzTest
{class SchedulerPluginer : ISchedulerPlugin{public string Name => "myPluginer";//缓存Scheduler对象引用private static IScheduler _sched;  public void Initialize(string pluginName, IScheduler sched){_sched = sched;            }public void Shutdown(){//默认我们借助VS的自动实现代码,这里是一个抛出异常的语句,一定要处理掉,不然在程序结束的时候,会报异常的,Console.WriteLine("插件停止");}public void Start(){//这个插件的功能启动放在这里//比如注册Listener,下面介绍三种监听器的功能与基础开发,监听器只能监听,没啥控制能力//也可以做一些控制Job和Trigger的功能Console.WriteLine("插件开始");}}

以上代码就完成了一个插件的开发。但啥用处都没有

二、SchedulerListener
using Quartz;
namespace QuartzTest
{class SchedulerListener : Quartz.ISchedulerListener{public void JobAdded(IJobDetail jobDetail){//Job创建时调用Console.WriteLine("JobAdded");}public void JobDeleted(JobKey jobKey){//Job删除时调用Console.WriteLine("JobDeleted");}public void JobPaused(JobKey jobKey){//Job暂停时调用Console.WriteLine("JobPaused");}public void JobResumed(JobKey jobKey){//Job恢复时调用Console.WriteLine("JobResumed");}public void JobScheduled(ITrigger trigger){//Job关联触发器时调用Console.WriteLine("JobScheduled");}public void JobsPaused(string jobGroup){//Job按分组暂停时调用Console.WriteLine("JobsPaused");}public void JobsResumed(string jobGroup){//Job按分组恢复时调用Console.WriteLine("JobsResumed");}public void JobUnscheduled(TriggerKey triggerKey){//Job删除触发器时调用,在删除Job是也会调用Console.WriteLine("JobUnscheduled");}public void SchedulerError(string msg, SchedulerException cause){//出错Console.WriteLine("SchedulerError");}public void SchedulerInStandbyMode(){//不知道Console.WriteLine("SchedulerInStandbyMode");}public void SchedulerShutdown(){//调度容器停止时Console.WriteLine("SchedulerShutdown");}public void SchedulerShuttingdown(){//不知道Console.WriteLine("SchedulerShuttingdown");}public void SchedulerStarted(){//调度容器启动完成Console.WriteLine("SchedulerStarted");}public void SchedulerStarting(){//调度窗口启动Console.WriteLine("SchedulerStarting");}public void SchedulingDataCleared(){//不知道Console.WriteLine("SchedulingDataCleared");}public void TriggerFinalized(ITrigger trigger){//触发器完成时,比如simple类型的触发器,在完成执行的次数后,就会调用此方法//可以理解成一个触发器的生命周期结束了,并从调度容器中删除注册Console.WriteLine("TriggerFinalized");}public void TriggerPaused(TriggerKey triggerKey){//触发器暂停时Console.WriteLine("TriggerPaused");}public void TriggerResumed(TriggerKey triggerKey){//触发器恢复时Console.WriteLine("TriggerResumed");}public void TriggersPaused(string triggerGroup){//触发器按分组暂停Console.WriteLine("TriggersPaused");}public void TriggersResumed(string triggerGroup){//触发器按分组恢复Console.WriteLine("TriggersResumed");}}
}
三、TriggerListener
using Quartz;
namespace QuartzTest
{class TriggerListener : Quartz.ITriggerListener{public string Name => "MyTriggerListener";public TriggerListener(){//初始化,只执行一次Console.WriteLine("init TriggerListener");}public void TriggerComplete(ITrigger trigger, IJobExecutionContext context, SchedulerInstruction triggerInstructionCode){//触发器执行完成//trigger参数可以获取到触发器的名称和分组,还有关联的Job名称//context 可以获取到此触发器的本次执行时间,开始时间,结束时间,下一次运行时间等这些参数Console.WriteLine("TriggerListener TriggerComplete");}public void TriggerFired(ITrigger trigger, IJobExecutionContext context){//触发器被触发,准备执行Console.WriteLine("TriggerListener TriggerFired");}public void TriggerMisfired(ITrigger trigger){//触发器错过计划执行时间时Console.WriteLine("TriggerListener TriggerMisfired");}public bool VetoJobExecution(ITrigger trigger, IJobExecutionContext context){//触发器即将执行,//返回false允许执行//返回true 本轮拒绝执行Console.WriteLine("TriggerListener VetoJobExecution");return false;}}
}
四、JobListener
using Quartz;
namespace QuartzTest
{class JobListener : Quartz.IJobListener{public string Name => "MyJobListener";public JobListener(){//初始化Console.WriteLine("init JobListener");}public void JobExecutionVetoed(IJobExecutionContext context){//不知道,正常流程下没有出现过调用Console.WriteLine("JobListener JobExecutionVetoed");}public void JobToBeExecuted(IJobExecutionContext context){//Job即将执行Console.WriteLine("JobListener JobToBeExecuted");}public void JobWasExecuted(IJobExecutionContext context, JobExecutionException jobException){//Job执行完成Console.WriteLine("JobListener JobWasExecuted");}}
}
获取触发器
TriggerKey tk = new TriggerKey("触发器名称");
Scheduler.GetTrigger(tk)  //返回一个触发器,能获取到触发器的基础属性资料,但不能获取运行时间这些资料
引用参考

https://www.w3cschool.cn/quartz_doc/
http://www.quartz-scheduler.org/ 这个在国内打开可能很慢

Quartz开发-插件开发相关推荐

  1. java quartz spring_JavaLib-quartz | 基于Spring Boot Quartz开发的定时任务

    基于Spring Boot Quartz开发的JavaLib-quartz,目的是帮你快速构建定时任务系统,你可以专心编写你的业务逻辑,而不必关注定时任务具体是如何实现的,他的性能如何,有没有异常以及 ...

  2. C#使用Topshelf和Quartz开发处理定时任务的Windows服务程序

    C#使用Topshelf框架和Quartz开发处理定时任务的Windows服务程序 背景 依赖 C#代码示例 任务调度的配置文件 测试 服务安装.启动.停止.卸载 背景 有些业务是运行在后台,需要界面 ...

  3. 基于 Quartz 开发企业级任务调度应用--转

    Quartz 基本概念及原理 Quartz Scheduler 开源框架 Quartz 是 OpenSymphony 开源组织在任务调度领域的一个开源项目,完全基于 Java 实现.该项目于 2009 ...

  4. 基于 Quartz 开发企业级任务调度应用

    简介: Quartz 是 OpenSymphony 开源组织在任务调度领域的一个开源项目,完全基于 Java 实现.作为一个优秀的开源调度框架,Quartz 具有功能强大,应用灵活,易于集成的特点.本 ...

  5. quartz (一) 基于 Quartz 开发企业级任务调度应用

    本文转自:http://www.ibm.com/developerworks/cn/opensource/os-cn-quartz/ Quartz 基本概念及原理 Quartz Scheduler 开 ...

  6. 基于quartz开发企业级任务调度应用

    转载自:http://www.open-open.com/lib/view/open1368940960919.html 简介: Quartz 是 OpenSymphony 开源组织在任务调度领域的一 ...

  7. springBoot项目集成quartz开发定时任务案例及注意事项

    文章目录 quartz下载.安装 实战案例 常见问题及解决方案 quartz下载.安装 Quartz是完全由java开发的一个开源的任务日程管理系统,任务进度管理器就是一个在预先确定的时间到达时,负责 ...

  8. ArcGIS Runtime for .Net Quartz开发探秘(三):承接来自GIS服务器的服务

    在上一篇博客中,我们已经在程序中添加了两个服务,一个是切片地图服务,另一个是三维场景服务. 这篇博客则会从整体上介绍几种常用服务的使用方式. 先解释两个名词:服务.图层 服务:服务器对外提供功能的单元 ...

  9. Spring Boot定时任务-Quartz介绍

    SpringBoot如何整合第三方定时任务框架,SpringBoot整合Quartz定时任务框架,我们主要来了解一下Quartz的一个介绍,以及对于Quartz使用的一个基本思路,我们先来看Quart ...

  10. Quartz学习资料地址记录 、Quartz 学习的博客地址记录

    Quartz专栏系列 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 1.Quartz学习--Quartz大致介绍(一) 2.Quartz学习--Q ...

最新文章

  1. 沉甸甸的证书,沉甸甸的心情
  2. 自己动手写C语言编译器(1)
  3. git版本管理工具push失败解决方案参考
  4. 网络协议必会知识点:互联网网络分层
  5. PythonOpenCV--Rtrees随机森林
  6. 抖音只能上下滑动吗_抖音:如何靠评论,轻松涨粉十万
  7. 面向对象软件开发代码结构(1)
  8. MySQL回闪_MySQL进行BINLOG回闪
  9. Win10 20H2正式发布,对比旧版新功能一览
  10. [linux-脚本]shebang(shabang #!)
  11. UVA1091 WF4786 Barcodes【编码检查】
  12. 【Eclipse】Spring Tool Suite插件
  13. 【翻译】Motion Blur for mobile devices in Unity
  14. 欧姆龙多PLC串行链接模式的应用
  15. VUE中nextTick( )函数思维导图
  16. FIT2CLOUD飞致云被权威研究机构评选为中国混合云管理软件领导者
  17. 《赖氏经典英语语法》第三集
  18. Win10系统隐藏文件资源管理器中的3D对象等七个文件夹
  19. bootstrap按钮组btn-group
  20. matlab抢占时隙算法,基于汉明重分组的动态帧时隙ALOHA防碰撞算法

热门文章

  1. Arcgis字段计算器实现自动编码
  2. 微信小程序--点餐系统(本地服务器+源码分享)
  3. 控制台打印vue实例
  4. R语言—简介、安装、包(package)的安装与加载
  5. 英文学术论文写作有哪些经验心得?
  6. 3D数学基础(一) | 坐标系
  7. html 显示shp,cesium加载本地shp数据
  8. 新浪微博Emoji表情解析
  9. ztree 后台异步加载_Ztree 分批异步加载
  10. hi3798mv300救砖包_迪优美特V26_hi3798mv300线刷固件升级包纯净系统