標籤:winform http java 使用 檔案 os
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