Quartz.NET一个开源的做业调度框架

Quartz.NET是一个开源的做业调度框架,很是适合在平时的工做中,定时轮询数据库同步,定时邮件通知,定时处理数据等。 数据库

Quartz.NET容许开发人员根据时间间隔(或天)来调度做业。它实现了做业和触发器的多对多关系,还能把多个做业与不一样的触发器关联。框架

整合了 Quartz.NET的应用程序能够重用来自不一样事件的做业,还能够为一个事件组合多个做业。spa

官网:http://www.quartz-scheduler.net/.net

下面结合个人项目中的使用给你们分享:blog

包括如下技术点:单一实例模式、NLog使用方法、模板类、抽象类、抽象方法、接口、Cron表达式接口

2.png

 

3.png

首先,咱们先起一个模板类JobService,定义抽象的操做,实现类本身经过重写GetTrigger()去定义触发的时间。事件

接下来,咱们来看看一个实现类ExpiredSessionsJobService,它定义了每60秒就触发一次,固然这个时间定义,咱们还能够用Cron表达式,能够用这类写法:开发

ICronTrigger CronTrigger = new Quartz.Impl.Triggers.CronTriggerImpl(JobName, GroupName, "0/60 * * * * ?");同步

4.png

 

Cron表达式

 

quartz中的cron表达式和Linux下的很相似,好比 "/5 * * ? * * *"  这样的7位表达式,最后一位年非必选。it

表达式从左到右,依此是秒、分、时、月第几天、月、周几、年。下面表格是要遵照的规范:

实例介绍

”0 0 10,14,16 * * ?"    天天10点,14点,16点 触发。

"0 0/5 14,18 * * ?"    天天14点或18点中,每5分钟触发 。

 

字段名 容许的值 容许的特殊字符
Seconds 0-59 , - * /
Minutes 0-59 , - * /
Hours 0-23 , - * /
Day of month 1-31 , - * ? / L W
Month 1-12 or JAN-DEC , - * /
Day of week 1-7 or SUN-SAT , - * ? / L #
Year 空, 1970-2099 , - * /

 

 

 

 

 

 

 

 

 

 

 

特殊字符 解释
, 或的意思。例:分钟位 5,10  即第5分钟或10分都触发。 
/ a/b。 a:表明起始时间,b频率时间。 例; 分钟位  3/5,  从第三分钟开始,每5分钟执行一次。
* 频率。 即每一次波动。    例;分钟位 *  即表示每分钟 
- 区间。  例: 分钟位   5-10 即5到10分期间。 
? 任意值 。   即每一次波动。只能用在DayofMonth和DayofWeek,两者冲突。指定一个另外一个一个要用?
L 表示最后。 只能用在DayofMonth和DayofWeek,4L即最后一个星期三
W 工做日。  表示最后。 只能用在DayofWeek
# 4#2。 只能用DayofMonth。 某月的第二个星期三  

 

 

 

 

 

 

 

 

 

 

 

 

 

 

具体的业务处理类是ExpiredSessionsJob,它必须实现IJob,Execute方法为具体业务方法,实现做业的内容;

5.png

 

6.png

 

咱们还能够新建一个ASP.NET WEBSITE,并引入CrystalQuartz.Remote包,生成后台可监控的管理平台。

7.png 

相关文章
相关标签/搜索