Quartz.NET簡介

來源:互聯網
上載者:User

標籤: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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.