Quartz.NET 2.0 學(xué)習(xí)筆記(1) :Quartz.NET簡介
Quartz.NET 項(xiàng)目地址 http://quartznet.sourceforge.net/
Quartz.NET 2.0 學(xué)習(xí)筆記(1) :Quartz.NET簡介
Quartz.NET 2.0 學(xué)習(xí)筆記(2) :和1.0的幾點(diǎn)不同
Quartz.NET 2.0 學(xué)習(xí)筆記(3) :通過配置文件實(shí)現(xiàn)任務(wù)調(diào)度
Quartz.NET 2.0 學(xué)習(xí)筆記(4) :cron表達(dá)式
Quartz.NET 2.0 學(xué)習(xí)筆記(5) :實(shí)例創(chuàng)建Windows服務(wù)實(shí)現(xiàn)任務(wù)調(diào)度
Quartz是OpenSymphony開源組織在Job scheduling領(lǐng)域又一個(gè)開源項(xiàng)目,它可以與J2EE與J2SE應(yīng)用程序相結(jié)合也可以單獨(dú)使用。Quartz可以用來創(chuàng)建簡單或?yàn)檫\(yùn)行十個(gè),百個(gè),甚至是好幾萬個(gè)Jobs這樣復(fù)雜的日程序表。Jobs可以做成標(biāo)準(zhǔn)的Java組件或 EJBs。Quartz的最新版本為Quartz 2.10。
Quartz是一個(gè)完全由java編寫的開源作業(yè)調(diào)度框架。不要讓作業(yè)調(diào)度這個(gè)術(shù)語嚇著你。盡管Quartz框架整合了許多額外功能, 但就其簡易形式看,你會(huì)發(fā)現(xiàn)它易用得簡直讓人受不了!。簡單地創(chuàng)建一個(gè)實(shí)現(xiàn)org.quartz.Job接口的java類。Job接口包含唯一的方法:
public void execute(JobExecutionContext context)
throws JobExecutionException;
在你的Job接口實(shí)現(xiàn)類里面,添加一些邏輯到execute()方法。一旦你配置好Job實(shí)現(xiàn)類并設(shè)定好調(diào)度時(shí)間表,Quartz將密切注意剩余時(shí)間。當(dāng)調(diào)度程序確定該是通知你的作業(yè)的時(shí)候,Quartz框架將調(diào)用你Job實(shí)現(xiàn)類(作業(yè)類)上的execute()方法并允許做它該做的事情。無需報(bào)告任何東西給調(diào)度器或調(diào)用任何特定的東西。僅僅執(zhí)行任務(wù)和結(jié)束任務(wù)即可。如果配置你的作業(yè)在隨后再次被調(diào)用,Quartz框架將在恰當(dāng)?shù)臅r(shí)間再次調(diào)用它。
Quartz.NET是一個(gè)開源的作業(yè)調(diào)度框架,是 OpenSymphony 的 Quartz API 的.NET移植,它用C#寫成,可用于winform和asp.net應(yīng)用中。它提供了巨大的靈活性而不犧牲簡單性。你能夠用它來為執(zhí)行一個(gè)作業(yè)而創(chuàng)建簡單的或復(fù)雜的調(diào)度。它有很多特征,如:數(shù)據(jù)庫支持,集群,插件,支持cron-like表達(dá)式等等。
2012年4月9日 Quartz.NET 2.0發(fā)布了Released版,對(duì)應(yīng)于Java Quartz的2.1版本,下載地址 http://quartznet.sourceforge.net/download.html 。整個(gè)版本相對(duì)于1.0版本進(jìn)行了大量的修改,單元測試的代碼更友好(重構(gòu)了更多的接口),API是基于泛型和.NET 3.5 SP1之后的特性,例如DateTimeOffset。這是Quartz.NET 有史以來最大的、最值得興奮的一個(gè)版本。
該版本除了在性能上有所提升外,增加了如下新特性:
- Scheduler.Clear() 提供方便用于清除所有任務(wù)、觸發(fā)器和日程的方法
- Scheduler.ScheduleJobs((IDictionary> triggersAndJobs, boolean replace) 方法可批量增加任務(wù)和觸發(fā)器
- Scheduler.UnscheduleJobs(IList triggerKeys) 方法提供批量取消任務(wù)的
- Scheduler.DeleteJobs(IList jobKeys),不用說,這是批量刪除任務(wù)的
- Scheduler.CheckExists(JobKey jobKey) 和 Scheduler.CheckExists(TriggerKey triggerKey)提供用于檢測任務(wù)關(guān)鍵字的唯一性
- 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 表達(dá)式支持指定每月的最后一天和最后一周,例如 L-3 為每月的最后三天
- 包含調(diào)度信息的 XML 文件增加了用來指定啟動(dòng)時(shí)間和間隔時(shí)間的方法
- XML 文件支持為觸發(fā)器指定 priority 屬性
- 增加核心任務(wù) DirectoryScanJob ,之前的FileScanJob 添加了一個(gè)迷你mum age參數(shù)
2.0在API上也做了重大的修改,API返回值的集合和泛型的使用,消除歧義和冗余代碼,掩藏/刪除不應(yīng)該公開給客戶端的方法,提高關(guān)注點(diǎn)分離,并引入與領(lǐng)域特定語言DSL的核心實(shí)體(jobs and triggers),自然就有了兼容性等問題,我們現(xiàn)在來看下都有哪些重大的修改:
- 不在支持.NET 1.1和2.0,需要Quartz.net 2.0至少需要.NET 3.5 SP1,是由于采用了新的語言特性和類接口
- 許多公共接口的返回值A(chǔ)rray更改為泛型的IList和ISet,例如GetJobGroupNames(): string[] 現(xiàn)在更改為 GetJobGroupNames(): IList ,現(xiàn)在用來標(biāo)識(shí)Jobs和Triggers 現(xiàn)在是基于JobsKey和TriggersKey,Keys 包含一個(gè)Name和一個(gè)Group。操作特定jobs/triggers 的方法使用Keys作為參數(shù)。例如GetTrigger(TriggerKey key): ITrigger 替換了GetTrigger(string name, string group): Trigger,ITrigger現(xiàn)在是一個(gè)接口而不是類。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 已經(jīng)移除,用XMLSchedulingDataProcessorPlugin替代
- Microsoft's Oracle drivers已經(jīng)不再支持,使用10g 或者 11g ODP.NET drivers替代
- 數(shù)據(jù)庫的Sechema已經(jīng)修改,需要使用database目錄下的腳本吧1.x的Schema升級(jí)到2.0
參考文章:
該文章主要內(nèi)容來自
http://www.rzrgm.cn/topcoder/archive/2012/02/22/2362819.html
注:此文章屬懶惰的肥兔原創(chuàng),版權(quán)歸作者和博客園共有,歡迎轉(zhuǎn)載,但未經(jīng)作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接
若您覺得這篇文章還不錯(cuò)請(qǐng)點(diǎn)擊下右下角的推薦,有了您的支持才能激發(fā)作者更大的寫作熱情,非常感謝。
如有問題,可以通過lzrabbit@126.com聯(lián)系我。
浙公網(wǎng)安備 33010602011771號(hào)