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 

相關文章
相關標籤/搜索