Quartz.NET 2.x 文件翻譯 - Lesson 2:Jobs 和 Triggers
Quartz.NET 2.x 文件翻譯 - Lesson 2:Jobs 和 Triggers 檢視官網原文
The Quartz API
Quartz API 的介面和類主要有:
- IScheduler - scheduler排程的主要介面api
- IJob - scheduler排程執行job需要實現的介面api
- IJobDetail - 用來定義jobs的例項
- ITrigger - 定義需要執行的job的排程構成
- JobBuilder - 用於定義/建立job的明細情況,定義job的例項
- TriggerBuilder - 用於定義/建立Trigger的例項
下面主要用到的關鍵詞術語有:IScheduler 和 Scheduler,IJob 和 Job,IJobDetail 和 JobDetail,ITrigger 和 Trigger.。
一個Scheduler排程的生命週期開始於它的建立,結束於它的關閉,這些都是通過SchedulerFactory 實現的。當我們建立了IScheduler介面後,我們就可以用來add、remove、或者list jobs和triggers,或者是其他與排程相關的工作。但是需要注意的是,我們必須首先start排程,否則job和trigger都是不會開始工作的。
quartz提供了“builder”類,用於定義一個域的特定語言。上一章有一個簡單的demo程式碼:
// define the job and tie it to our HelloJob class IJobDetail job = JobBuilder.Create<HelloJob>() .WithIdentity("myJob", "group1") // name "myJob", group "group1" .Build(); // Trigger the job to run now, and then every 40 seconds ITrigger trigger = TriggerBuilder.Create() .WithIdentity("myTrigger", "group1") .StartNow() .WithSimpleSchedule(x => x .WithIntervalInSeconds(40) .RepeatForever()) .Build(); // Tell quartz to schedule the job using our trigger sched.scheduleJob(job, trigger);
這段程式碼使用JobBuilder建立了一個job定義,同樣的IJobDetail程式碼塊用TriggerBuilder 建立了trigger的定義,同時定義了方法的特定type型別。schedule 排程的方法有:
- WithCalendarIntervalSchedule
- WithCronSchedule
- WithDailyTimeIntervalSchedule
- WithSimpleSchedule
使用DateBuilder可以輕鬆的構建特定的執行時間點等,如下個小時、十點鐘、或者是其他的具體時間方式。
Jobs and Triggers
一個job就是一個實現了IJob介面的類,如下為IJob介面的唯一方法:
namespace Quartz { public interface IJob { void Execute(JobExecutionContext context); } }
當 Job的trigger被觸發後,Execute方法就會被scheduler排程的執行緒請求,JobExecutionContext包含執行環境引數等資訊 被傳遞給execute方法用於Scheduler排程執行job例項任務,一個trigger觸發器被觸發執行此job任務。
JobDetail 物件是由Quartz.NET客戶端程式(就是你建立的專案)將job被新增到scheduler排程的時候建立的。它包含了job的各種屬性設定資訊,好比一個job的資料地圖一樣,它儲存了job例項的狀態資訊等。這其實就是job例項的定義資訊,在下一章我們在細聊。
Trigger物件是用於job任務的執行觸發。當我們想要schedule排程一個job任務的時候,需要例項化一個Trigger然後配置好屬性引數用於執行我們想要的排程。Trigger也許也有類似的資料地圖,用於將引數資訊傳遞給job任務當Trigger被觸發的時候。Quartz 包含了很多的Trigger觸發型別,但是經常用到的型別是SimpleTrigger(ISimpleTrigger介面)和CronTrigger(ICronTrigger介面)。
SimpleTrigger很容易實現一次性的job執行配置(就是在單一事件執行一次job任務),或者是在你需要執行的時間點執行並重復N次,只需要設定好執行間隔時間即可。CronTrigger主要用於特定時間點或者週期性質的執行間隔,如每週一或者每個月的第四天等等。
為什麼使用job和Trigger這樣分開獨立的方式?很多的schedulers排程job作業並沒有job和Trigger的概念。有些定義一個job僅僅是用來執行一個時間點job的標示而已。其他的則更像是quartz job的合集。然而在我們開發Quartz的時候,認為分離schedule排程和work工作還是很有必要的,有很多的好處。
比如說:job可以建立並儲存在獨立的scheduler排程中並Trigger觸發,許多的Trigger觸發器都可以觸發相同的job任務。這種鬆耦合的另外一個好處就是相關Trigger觸發器過期後,配置在scheduler排程中的job任務任然是可以使用的,這樣這些job任務仍然可以繼續被scheduler排程使用,而不需要我們重新定義新的job任務,我們還可以修改或者替換Trigger觸發器來繼續工作而不需要去重新定義新的job任務。
Identities
job和Trigger是有各自的識別key值註冊在quartz的scheduler排程中的。這些job任務的key和Trigger觸發器的key是可以放到一個group組的,這樣我們就可以實現一個類別的組任務集合,比如一個彙報工作的組任務等等。
到目前為止,我們就瞭解了什麼是job任務和Trigger觸發器了,在第三章和第四章將會講解更多相關內容。
由龐順龍最後編輯於:3年前
內容均為作者獨立觀點,不代表八零IT人立場,如涉及侵權,請及時告知。
相關文章
- Quartz.NET 2.x 文件翻譯 - Lesson 3:Jobs 和 Triggers深入瞭解quartz
- Quartz.NET 2.x 文件翻譯 - Lesson 8:SchedulerListenersquartz
- Quartz.NET 2.x 文件翻譯 - Lesson 9:JobStoresquartz
- Quartz.NET 2.x 文件翻譯 - Lesson 4:更多Triggers觸發器說明quartz觸發器
- Quartz.NET 2.x 文件翻譯 - Lesson 1:使用Quartzquartz
- Quartz.NET 2.x 文件翻譯 - Lesson 7:TriggerListeners 和JobListenersquartz
- Quartz.NET 2.x 文件翻譯 - Lesson 10:Configuration, Resource Usage 和 SchedulerFactoryquartz
- Quartz.NET 2.x 文件翻譯 - Lesson 5:SimpleTrigger觸發模式quartz模式
- Quartz.NET 2.x 文件翻譯 - Lesson 12:Quartz的其他各種特性quartz
- Quartz.NET 2.x 文件翻譯 - Lesson 6:CronTrigger觸發模式quartz模式
- Quartz.NET 2.x 文件翻譯-文章目錄quartz
- Quartz.NET 2.x 文件翻譯 - Lesson 11:Advanced (Enterprise) Features 高階功能quartz
- rabbitmq 官方文件翻譯-2MQ
- docker官方文件翻譯2Docker
- 文件翻譯器怎麼用?如何翻譯Word文件?
- JavaPoet 文件翻譯Java
- 有ppt文件翻譯軟體嗎?如何翻譯整篇ppt文件
- MPAndroidChart文件翻譯Android
- Moya官方文件翻譯
- Samza文件翻譯 : Backgroud
- 本人翻譯的文件
- 實用的Word文件翻譯方法分享,讓Word文件快速翻譯
- 怎麼翻譯整篇Excel文件?Excel文件翻譯一招搞定Excel
- hadoop編譯—+2.x編譯Hadoop編譯
- 怎麼把Excel文件翻譯成中文?Excel文件翻譯方法介紹Excel
- docker官方文件翻譯3Docker
- SnapKit 中文文件翻譯APK
- docker官方文件翻譯4Docker
- docker官方文件翻譯5Docker
- docker官方文件翻譯1Docker
- Core Foundation 官方文件翻譯
- Samza文件翻譯 : Architecture
- Akka Stream文件翻譯:Motivation
- Guava文件翻譯之 ServiceGuava
- Guava文件翻譯之ListenableFutureGuava
- expat介紹文件翻譯
- TailWind文件翻譯說明以及每日翻譯進度AI
- 元件規範和生命週期——react文件翻譯元件React