开源的作业调度框架 - Quartz.NET

2023-10-27

开源的作业调度框架 - Quartz.NET

Quartz.NET是一个开源的作业调度框架,是OpenSymphony 的 Quartz API的.NET移植,它用C#写成,可用于winform和asp.net应用中。它提供了巨大的灵活性而不牺牲简单性。你能够用它来为执行一个作业而创建简单的或复杂的调度。它有很多特征,如:数据库支持,集群,插件,支持cron-like表达式等等。 
      你曾经需要应用执行一个任务吗?这个任务每天或每周星期二晚上11:30,或许仅仅每个月的最后一天执行。一个自动执行而无须干预的任务在执行过程中如果发生一个严重错误,应用能够知到其执行失败并尝试重新执行吗?你和你的团队是用.NET编程吗?如果这些问题中任何一个你回答是,那么你应该使用Quartz.NET调度器。 Quartz.NET允许开发人员根据时间间隔(或天)来调度作业。它实现了作业和触发器的多对多关系,还能把多个作业与不同的触发器关联。整合了 Quartz.NET的应用程序可以重用来自不同事件的作业,还可以为一个事件组合多个作业.
  
   下面是官方的开发指南教程的中文版:英文版的参照官方网站(http://quartznet.sourceforge.net/tutorial.html
 

Quartz.net官方开发指南 第一课:使用Quartz.net

    使用scheduler之前应首先实例化它。使用SchedulerFactory可以完成scheduler的实例化

Quartz.net官方开发指南 第二课:Jobs And Triggers

   JobDetail对象由Quartz客户端在Job被加入到scheduler时创建。它包含了Job的各种设置属性以及一个JobDataMap对象,这个对象被用来存储给定Job类实例的状态信息。
Trigger对象被用来触发jobs的执行。你希望将任务纳入到进度,要实例化一个Trigger并且“调整”它的属性以满足你想要的进度安排。Triggers也有一个JobDataMap与之关联,这非常有利于向触发器所触发的Job传递参数。Quartz打包了很多不同类型的Trigger,但最常用的Trigge类是SimpleTrigger和CronTrigger。

Quartz.net官方开发指南 第三课:更多关于Jobs和JobDetails

  在所实现的类成为真正的“Job”时,期望任务所具有的各种属性需要通知给Quartz。通过JobDetail类可以完成这个工作,这个类在前面的章节中曾简短提及过。现在,我们花一些时间来讨论Quartz中Jobs的本质和Job实例的生命周期。

Quartz.net官方开发指南 第四课:关于Triggers更多内容

     同Job一样,trigger非常容易使用,但它有一些可选项需要注意和理解,同时,trigger有不同的类型,要按照需求进行选择 
Quartz.net官方开发指南 第五课: SimpleTrigger

   如果需要让任务只在某个时刻执行一次,或者,在某个时刻开始,然后按照某个时间间隔重复执行,简单地说,如果你想让触发器在2007年8月20日上午11:23:54秒执行,然后每个隔10秒钟重复执行一次,并且这样重复5次。那么SimpleTrigger 就可以满足你的要求。

Quartz.net官方开发指南 第六课 : CronTrigger

    如果你需要像日历那样按日程来触发任务,而不是像SimpleTrigger 那样每隔特定的间隔时间触发,CronTriggers通常比SimpleTrigger更有用。
使用CronTrigger,你可以指定诸如“每个周五中午”,或者“每个工作日的9:30”或者“从每个周一、周三、周五的上午9:00到上午10:00之间每隔五分钟”这样日程安排来触发。甚至,象SimpleTrigger一样,CronTrigger也有一个StartTime以指定日程从什么时候开始,也有一个(可选的)EndTime以指定何时日程不再继续。

Quartz.net官方开发指南 第七课 : TriggerListeners和JobListeners

   监听器是在scheduler事件发生时能够执行动作的对象。可以看出,TriggerListeners接收与triggers相关的事件,而JobListeners则接收与Job相关的事件。

Quartz.net官方开发指南 第八课:SchedulerListeners

  SchedulerListeners同TriggerListeners及JobListeners非常相似,SchedulerListeners只接收与特定trigger 或job无关的Scheduler自身事件通知。
Scheduler相关的事件包括:增加job或者trigger,移除Job或者trigger, scheduler内部发生的错误,scheduler将被关闭的通知,以及其他。

Quartz.net官方开发指南 第九课: JobStore

    JobStore负责保持对所有scheduler “工作数据”追踪,这些工作数据包括:job(任务),trigger(触发器),calendar(日历)等。为你的Quartz scheduler选择合适的JobStore是非常重要的一步,幸运的是,如果你理解了不同的JobStore之间的差别,那么选择就变得非常简单。在提供产生scheduler 实例的SchedulerFactory的属性文件中声明scheduler所使用的JobStore(以及它的配置)

Quartz.net官方开发指南 第十课: 配置、资源使用以及SchedulerFactory

    Quartz以模块方式构架,因此,要使它运行,几个组件必须很好的咬合在一起。幸运的是,已经有了一些现存的助手可以完成这些工作  

Quartz.net官方开发指南 第十一课: 高级(企业级)属性

   集群只能用在使用ADO.NET-Jobstore的情况。特新包括负载均衡和容错(如果JobDetail的"request recovery"标记被设置为true)

Quartz.net官方开发指南 第十二课:Quartz 的其他特性

  Plug-Ins 插件 :Quartz提供了一个接口(ISchedulerPlugin)来插入附加的功能。
  JobFactory :当触发器触发时,与之相关联的任务被Scheduler中配置的JobFactory所实例华。缺省的JobFactory只是简单地创建一个Job实例。你也许想创建自己的JobFactory实现,以完成诸如让应用的IoC 或者 DI容器产生/初始化job实例的功能。
'Factory-Shipped' Jobs :Quartz也提供了一些可以在你的应用中使用的实用的Jobs,比如,发邮件、调用远程对象。这些外来的Job可以在Quartz.Jobs命名空间里中找到。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

开源的作业调度框架 - Quartz.NET 的相关文章

随机推荐

  • MVC控制器(Controller)与策略模式(Strategy)

    MVC控制器 Controller 与策略模式 Strategy 转载时请注明出处和作者联系方式 http blog csdn net absurd 作者联系方式 Li XianJing
  • Hashpump实现哈希长度扩展攻击

    Hashpump实现哈希长度扩展攻击 RCEME 0x01 HASH长度拓展攻击 哈希长度拓展攻击的原理有点过于复杂了 这里直接copy其他大佬的描述了 长度扩展攻击 length extension attack 是指针对某些允许包含额外
  • C#

    System IO Pipelines 很酷的读写数据流方式 文章目录 System IO Pipelines 很酷的读写数据流方式 前言 System IO Pipelines 是啥 有什么优点 有哪些应用场景 网络编程 文件处理 怎么使
  • "防止同时出现多个应用程序实例"之改进

    防止同时出现多个应用程序实例 之改进字号 大 中 小 在 Delphi 5 开发人员指南 中第13章中有一篇 防止同时出现多个应用程序实例 代码中给出了一个MultInst pas单元 工程引用此单元就能防止同时出现多个实例 但实际应用中发
  • Linux中find命令-path -prune用法详解(find命令如何只查找当前目录,而不查找当前目录下的子目录find . ! -name "." -type d -prune -o -type f -name "*.txt" -print)

    在Windows中可以在某些路径中查找文件 也可以设定不在某些路径中查找文件 下面用Linux中的find的命令结合其 path prune参数来看看在Linux中怎么实现此功能 假如在当前目录下查找文件 且当前目录下有很多文件及目录 多层
  • python自动化赚钱-薅羊毛

    1 目 标 场 景 最近 有一个朋友告诉我 她在某平台上购买了一部手机 收到货之后发现商品质量挺好的 价格也不贵 临了随手给了个好评 商家最后还给她发一个 小红包 她把这个商品分享给了我 本篇文章的目的是利用Python 自动化完成商品购买
  • iOS16新特性:实时活动-在锁屏界面实时更新APP消息

    简介 之前在 iOS16新特性 灵动岛适配开发与到家业务场景结合的探索实践 里介绍了iOS16新的特性 实时更新 Live Activity 中灵动岛的适配流程 但其实除了灵动岛的展示样式 Live Activity还有一种非常实用的应用场
  • 王者荣耀助手动态服务器维护中,王者荣耀助手动态怎么发不了

    发布时间 2015 11 20 王者荣耀助手礼包怎么领取 助手礼包领取地址是什么 下面来看看王者荣耀助手礼包怎么领取 助手礼包领取地址一览吧 希望能对大家有所帮助 蚕豆网王者荣耀开黑群 439442380 点击加入 亲爱的召唤师 安卓版 l
  • MySQL之InnoDB存储结构

    1 InnoDB存储引擎 InnoDB存储引擎最早由Innobase Oy公司开发 属第三方存储引擎 从MySQL 5 5版本开始作为表的默认存储引擎 该存储引擎是第一个完整支持ACID事务的MySQL存储引擎 特点是行锁设计 支持MVCC
  • 并发编程-CompletableFuture解析

    1 CompletableFuture介绍 CompletableFuture对象是JDK1 8版本新引入的类 这个类实现了两个接口 一个是Future接口 一个是CompletionStage接口 CompletionStage接口是JD
  • 单片机怎么跳出循环_如何用单片机产生一个三角波?

    今天要学习的这个芯片叫做DAC0832技术流程我们不讲 就讲怎么用 学习单片机技术 我提倡如果看不懂 就先拿着用 看一下如何接线 wr低电平有效 输入寄存器写选通信号 cs低电平有效 输入寄存器选择信号 ILE 允许锁存信号 高电平有效 D
  • got-10k数据预处理

    got数据文件夹格式 GOT 10k train GOT 10k Train 000001 GOT 10k Train 009335 list txt val GOT 10k Val 000001 GOT 10k Val 000180 li
  • ogre每帧渲染在SceneManager::_renderScene()

    今天抄0 12版本ogre 在这里是每帧渲染的内容 以后可以再调试下高版本的 在这里设置个断点 void SceneManager renderScene Camera camera Viewport vp bool includeOver
  • Python报错:Low Memory,The IDE is running low on memory and this might affect performance.

    报错信息 使用pycharm过程中报如下错误 Low Memory The IDE is running low on memory and this might affect performance Please consider inc
  • DATAX 使用记录

    DATAX 使用记录 批量表迁移 准备表 准备datax json文件 准备执行脚本 sh 批量表迁移 准备表 vim mysqltables txt tb consultation type tb conversation record
  • JUC学习系列九(同步点 Exchanger)

    可以在对中对元素进行配对和交换的线程的同步点 每个线程将条目上的某个方法呈现给 exchange 方法 与伙伴线程进行匹配 并且在返回时接收其伙伴的对象 Exchanger 可能被视为 SynchronousQueue 的双向形式 Exch
  • 查看 Python 已安装模块的方法

    目录 前言 1 方法列举 2 方法演示 2 1 方法一演示 2 2 方法二演示 2 3 方法三演示 总结 前言 提示 这里可以添加本文要记录的大概内容 本文介绍几种查看 Python 已安装模块 modules 的方法 1 方法列举 可通过
  • ImportError: No module named 'StringIO'

    python3中用HTMLTestRunner py报ImportError No module named StringIO 的解决方法 1 原因是官网的是python2语法写的 看官手动把官网的HTMLTestRunner py改成py
  • Otter入门简介

    前言 最近接了一个新的需求 需要在伦敦机房做一个数据同步方案 同步到北京 因为之前搭建过公网之间的同步 一是延迟比较大 另一个是因为同步经常会断 临时解决方案就是搭建一个多源复制 隔断时间全量一次数据到北京机房 但是这个传输时间也是个头疼的
  • 开源的作业调度框架 - Quartz.NET

    开源的作业调度框架 Quartz NET Quartz NET是一个开源的作业调度框架 是OpenSymphony 的 Quartz API的 NET移植 它用C 写成 可用于winform和asp net应用中 它提供了巨大的灵活性而不牺