Quartz.NET 項目位址 http://quartznet.sourceforge.net/
Quartz.NET 2.0 學習筆記(1) :Quartz.NET簡介
Quartz.NET 2.0 學習筆記(2) :和1.0的幾點不同
Quartz.NET 2.0 學習筆記(3) :通過配置檔案實作任務排程
Quartz.NET 2.0 學習筆記(4) :cron表達式
Quartz.NET 2.0 學習筆記(5) :執行個體建立Windows服務實作任務排程
Quartz是OpenSymphony開源組織在Job scheduling領域又一個開源項目,它可以與J2EE與J2SE應用程式相結合也可以單獨使用。Quartz可以用來建立簡單或為運作十個,百個,甚至是好幾萬個Jobs這樣複雜的日程式表。Jobs可以做成标準的Java元件或 EJBs。Quartz的最新版本為Quartz 2.10。
Quartz是一個完全由java編寫的開源作業排程架構。不要讓作業排程這個術語吓着你。盡管Quartz架構整合了許多額外功能, 但就其簡易形式看,你會發現它易用得簡直讓人受不了!。簡單地建立一個實作org.quartz.Job接口的java類。Job接口包含唯一的方法:
public void execute(JobExecutionContext context)
throws JobExecutionException;
在你的Job接口實作類裡面,添加一些邏輯到execute()方法。一旦你配置好Job實作類并設定好排程時間表,Quartz将密切注意剩餘時間。當排程程式确定該是通知你的作業的時候,Quartz架構将調用你Job實作類(作業類)上的execute()方法并允許做它該做的事情。無需報告任何東西給排程器或調用任何特定的東西。僅僅執行任務和結束任務即可。如果配置你的作業在随後再次被調用,Quartz架構将在恰當的時間再次調用它。
Quartz.NET是一個開源的作業排程架構,是 OpenSymphony 的 Quartz API 的.NET移植,它用C#寫成,可用于winform和asp.net應用中。它提供了巨大的靈活性而不犧牲簡單性。你能夠用它來為執行一個作業而建立簡單的或複雜的排程。它有很多特征,如:資料庫支援,叢集,插件,支援cron-like表達式等等。
2012年4月9日 Quartz.NET 2.0釋出了Released版,對應于Java Quartz的2.1版本,下載下傳位址 http://quartznet.sourceforge.net/download.html 。整個版本相對于1.0版本進行了大量的修改,單元測試的代碼更友好(重構了更多的接口),API是基于泛型和.NET 3.5 SP1之後的特性,例如DateTimeOffset。這是Quartz.NET 有史以來最大的、最值得興奮的一個版本。
該版本除了在性能上有所提升外,增加了如下新特性:
- Scheduler.Clear() 提供友善用于清除所有任務、觸發器和日程的方法
- Scheduler.ScheduleJobs((IDictionary> triggersAndJobs, boolean replace) 方法可批量增加任務和觸發器
- Scheduler.UnscheduleJobs(IList triggerKeys) 方法提供批量取消任務的
- Scheduler.DeleteJobs(IList jobKeys),不用說,這是批量删除任務的
- Scheduler.CheckExists(JobKey jobKey) 和 Scheduler.CheckExists(TriggerKey triggerKey)提供用于檢測任務關鍵字的唯一性
- AdoJobStore allows one set of tables to be used by multiple distinct scheduler instances
- AdoJobStore is now capable of storing non-core Trigger implementations without using BLOB columns, through the use of the new TriggerPersistenceDelegate interface, which can (optionally) be implemented by implementers of custom Trigger types.
- Cron 表達式支援指定每月的最後一天和最後一周,例如 L-3 為每月的最後三天
- 包含排程資訊的 XML 檔案增加了用來指定啟動時間和間隔時間的方法
- XML 檔案支援為觸發器指定 priority 屬性
- 增加核心任務 DirectoryScanJob ,之前的FileScanJob 添加了一個迷你mum age參數
2.0在API上也做了重大的修改,API傳回值的集合和泛型的使用,消除歧義和備援代碼,掩藏/删除不應該公開給用戶端的方法,提高關注點分離,并引入與領域特定語言DSL的核心實體(jobs and triggers),自然就有了相容性等問題,我們現在來看下都有哪些重大的修改:
- 不在支援.NET 1.1和2.0,需要Quartz.net 2.0至少需要.NET 3.5 SP1,是由于采用了新的語言特性和類接口
- 許多公共接口的傳回值Array更改為泛型的IList和ISet,例如GetJobGroupNames(): string[] 現在更改為 GetJobGroupNames(): IList ,現在用來辨別Jobs和Triggers 現在是基于JobsKey和TriggersKey,Keys 包含一個Name和一個Group。操作特定jobs/triggers 的方法使用Keys作為參數。例如GetTrigger(TriggerKey key): ITrigger 替換了GetTrigger(string name, string group): Trigger,ITrigger現在是一個接口而不是類。ISimpleTrigger, ICronTrigger也一樣。新的 DSL/builder-based API 組織Jobs和Triggers。
IJobDetail job = JobBuilder.Create<SimpleJob>() .WithIdentity("job1", "group1") .Build();
ITrigger trigger = TriggerBuilder.Create() .WithIdentity("trigger1", "group1") .StartAt(DateBuilder.FutureDate(2, IntervalUnit.HOURS)) .WithSimpleSchedule(x => x.RepeatHourlyForever()) .ModifiedByCalendar("holidays") .Build();
- JobInitializationPlugin 已經移除,用XMLSchedulingDataProcessorPlugin替代
- Microsoft's Oracle drivers已經不再支援,使用10g 或者 11g ODP.NET drivers替代
- 資料庫的Sechema已經修改,需要使用database目錄下的腳本吧1.x的Schema更新到2.0
參考文章:
- Quartz.NET - Version Migration Guide
- Java Quartz's documentation .
該文章主要内容來自
http://www.cnblogs.com/topcoder/archive/2012/02/22/2362819.html
http://www.cnblogs.com/shanyou/archive/2011/10/15/2213636.html
注:此文章屬懶惰的肥兔原創,版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接配接
若您覺得這篇文章還不錯請點選下右下角的推薦,有了您的支援才能激發作者更大的寫作熱情,非常感謝。
如有問題,可以通過[email protected]聯系我。
Quartz.NET 2.0 學習筆記(1) :Quartz.NET簡介
Quartz.NET 2.0 學習筆記(2) :和1.0的幾點不同
Quartz.NET 2.0 學習筆記(3) :通過配置檔案實作任務排程
Quartz.NET 2.0 學習筆記(4) :cron表達式
Quartz.NET 2.0 學習筆記(5) :執行個體建立Windows服務實作任務排程