Quartz.NET 實現作業調度

Quartz.NET是一個開源的作業調度框架,是OpenSymphony Quartz API.NET移植,它用C#寫成,可用於winformasp.net應用中。它提供了巨大的靈活性而不犧牲簡單性。你能夠用它來爲執行一個作業而創建簡單的或複雜的調度。它有很多特徵,如:數據庫支持,集羣,插件,支持cron-like表達式等等。 
      你曾經需要應用執行一個任務嗎?這個任務每天或每週星期二晚上11:30,或許僅僅每個月的最後一天執行。一個自動執行而無須干預的任務在執行過程中如果發生一個嚴重錯誤,應用能夠知到其執行失敗並嘗試重新執行嗎?你和你的團隊是用.NET編程嗎?如果這些問題中任何一個你回答是,那麼你應該使用Quartz.NET調度器。 Quartz.NET允許開發人員根據時間間隔(或天)來調度作業。它實現了作業和觸發器的多對多關係,還能把多個作業與不同的觸發器關聯。整合了 Quartz.NET的應用程序可以重用來自不同事件的作業,還可以爲一個事件組合多個作業.
   
   下面是官方的開發指南教程的中文版:英文版的參照官方網站(http://quartznet.sourceforge.net/tutorial.html

 

Quartz.net官方開發指南 第一課:使用Quartz.net

    使用scheduler之前應首先實例化它。使用SchedulerFactory可以完成scheduler的實例化

Quartz.net官方開發指南 第二課:Jobs And Triggers

   JobDetail對象由Quartz客戶端在Job被加入到scheduler時創建。它包含了Job的各種設置屬性以及一個JobDataMap對象,這個對象被用來存儲給定Job類實例的狀態信息。
Trigger對象被用來觸發jobs的執行。你希望將任務納入到進度,要實例化一個Trigger並且“調整”它的屬性以滿足你想要的進度安排。Triggers也有一個JobDataMap與之關聯,這非常有利於向觸發器所觸發的Job傳遞參數。Quartz打包了很多不同類型的Trigger,但最常用的Trigge類是SimpleTrigger和CronTrigger。

Quartz.net官方開發指南 第三課:更多關於Jobs和JobDetails

 在所實現的類成爲真正的“Job”時,期望任務所具有的各種屬性需要通知給Quartz。通過JobDetail類可以完成這個工作,這個類在前面的章節中曾簡短提及過。現在,我們花一些時間來討論Quartz中Jobs的本質和Job實例的生命週期。

Quartz.net官方開發指南 第四課:關於Triggers更多內容

     同Job一樣,trigger非常容易使用,但它有一些可選項需要注意和理解,同時,trigger有不同的類型,要按照需求進行選擇  
Quartz.net官方開發指南 第五課: SimpleTrigger

   如果需要讓任務只在某個時刻執行一次,或者,在某個時刻開始,然後按照某個時間間隔重複執行,簡單地說,如果你想讓觸發器在2007年8月20日上午11:23:54秒執行,然後每個隔10秒鐘重複執行一次,並且這樣重複5次。那麼SimpleTrigger 就可以滿足你的要求。

Quartz.net官方開發指南 第六課 : CronTrigger

    如果你需要像日曆那樣按日程來觸發任務,而不是像SimpleTrigger 那樣每隔特定的間隔時間觸發,CronTriggers通常比SimpleTrigger更有用。
使用CronTrigger,你可以指定諸如“每個週五中午”,或者“每個工作日的9:30”或者“從每個週一、週三、週五的上午9:00到上午10:00之間每隔五分鐘”這樣日程安排來觸發。甚至,象SimpleTrigger一樣,CronTrigger也有一個StartTime以指定日程從什麼時候開始,也有一個(可選的)EndTime以指定何時日程不再繼續。

Quartz.net官方開發指南 第七課 : TriggerListeners和JobListeners

   監聽器是在scheduler事件發生時能夠執行動作的對象。可以看出,TriggerListeners接收與triggers相關的事件,而JobListeners則接收與Job相關的事件。 

Quartz.net官方開發指南 第八課:SchedulerListeners

  SchedulerListeners同TriggerListeners及JobListeners非常相似,SchedulerListeners只接收與特定trigger 或job無關的Scheduler自身事件通知。
Scheduler相關的事件包括:增加job或者trigger,移除Job或者trigger, scheduler內部發生的錯誤,scheduler將被關閉的通知,以及其他。

Quartz.net官方開發指南 第九課: JobStore

    JobStore負責保持對所有scheduler “工作數據”追蹤,這些工作數據包括:job(任務),trigger(觸發器),calendar(日曆)等。爲你的Quartz scheduler選擇合適的JobStore是非常重要的一步,幸運的是,如果你理解了不同的JobStore之間的差別,那麼選擇就變得非常簡單。在提供產生scheduler 實例的SchedulerFactory的屬性文件中聲明scheduler所使用的JobStore(以及它的配置)

Quartz.net官方開發指南 第十課: 配置、資源使用以及SchedulerFactory

    Quartz以模塊方式構架,因此,要使它運行,幾個組件必須很好的咬合在一起。幸運的是,已經有了一些現存的助手可以完成這些工作  

Quartz.net官方開發指南 第十一課: 高級(企業級)屬性

   集羣只能用在使用ADO.NET-Jobstore的情況。特新包括負載均衡和容錯(如果JobDetail的"request recovery"標記被設置爲true) 

Quartz.net官方開發指南 第十二課:Quartz 的其他特性

  Plug-Ins 插件 :Quartz提供了一個接口(ISchedulerPlugin)來插入附加的功能。
  JobFactory :當觸發器觸發時,與之相關聯的任務被Scheduler中配置的JobFactory所實例華。缺省的JobFactory只是簡單地創建一個Job實例。你也許想創建自己的JobFactory實現,以完成諸如讓應用的IoC 或者 DI容器產生/初始化job實例的功能。
'Factory-Shipped' Jobs :Quartz也提供了一些可以在你的應用中使用的實用的Jobs,比如,發郵件、調用遠程對象。這些外來的Job可以在Quartz.Jobs命名空間裏中找到。

轉自:http://www.cnblogs.com/tommyli/archive/2009/02/09/1386644.html

發佈了77 篇原創文章 · 獲贊 11 · 訪問量 24萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章