Quartz.NET 2.x 文件翻譯 - Lesson 5:SimpleTrigger觸發模式
Quartz.NET 2.x 文件翻譯 - Lesson 5:SimpleTrigger觸發模式 檢視官網英文原文
SimpleTrigger觸發模式能滿足我們的基本排程要求,比如在固定時間點執行一次,然後間隔一定時間再次執行這樣的情形。
說了這些後,你可能沒有發現SimpleTrigger的屬性包括開始時間、結束時間、重複次數和重複間隔。所有這些屬性都可以使用的,只是通過開始時間、結束時間這樣的關係來實現的。
重複次數可以是0、一個正整數或者是一個SimpleTrigger.RepeatIndefinitely常量。重複間隔屬性必須是TimeSpan.Zero或者TimeSpan的正整數。需要我們注意的是,當重複間隔為0會導致Trigger觸發器重複計數的同時觸發執行。
如果你不熟悉DateTime類,可以依賴startTimeUtc(或者endTimeUtc)去實現trigger觸發器的觸發時間設定。
EndTimeUtc屬性(如果指定了的話)超出了重複次數的限制,這就可以讓我們實現這樣的需求:比如執行間隔10秒的任務,一直到我們指定的一個截止時間,而不是依賴我們指定的執行次數,這就可以實現了。
SimpleTrigger例項使用TriggerBuilder建立(Trigger觸發器的主要屬性)和WithSimpleSchedule的擴充套件方法(SimpleTrigger的特定屬性)。
建立一個特定的時刻觸發,沒有重複:
// trigger builder creates simple trigger by default, actually an ITrigger is returned ISimpleTrigger trigger = (ISimpleTrigger) TriggerBuilder.Create() .WithIdentity("trigger1", "group1") .StartAt(myStartTime) // some Date .ForJob("job1", "group1") // identify job with name, group strings .Build();建立一個特定的時刻觸發,然後重複每十秒十次:
trigger = TriggerBuilder.Create() .WithIdentity("trigger3", "group1") .StartAt(myTimeToStartFiring) // if a start time is not given (if this line were omitted), "now" is implied .WithSimpleSchedule(x => x .WithIntervalInSeconds(10) .WithRepeatCount(10)) // note that 10 repeats will give a total of 11 firings .ForJob(myJob) // identify job with handle to its JobDetail itself .Build();建立一個觸發,執行一次,五分鐘後開始執行:
trigger = (ISimpleTrigger) TriggerBuilder.Create() .WithIdentity("trigger5", "group1") .StartAt(DateBuilder.FutureDate(5, IntervalUnit.Minute)) // use DateBuilder to create a date in the future .ForJob(myJobKey) // identify job with its JobKey .Build();建立一個觸發,並立刻執行,然後每隔五分鐘重複一次,直到時間22:00:
trigger = TriggerBuilder.Create() .WithIdentity("trigger7", "group1") .WithSimpleSchedule(x => x .WithIntervalInMinutes(5) .RepeatForever()) .EndAt(DateBuilder.DateOf(22, 0, 0)) .Build();建立一個觸發,下一個小時開始的時候執行,然後每2小時重複一次:
trigger = TriggerBuilder.Create() .WithIdentity("trigger8") // because group is not specified, "trigger8" will be in the default group .StartAt(DateBuilder.EvenHourDate(null)) // get the next even-hour (minutes and seconds zero ("00:00")) .WithSimpleSchedule(x => x .WithIntervalInHours(2) .RepeatForever()) // note that in this example, 'forJob(..)' is not called // - which is valid if the trigger is passed to the scheduler along with the job .Build(); scheduler.scheduleJob(trigger, job);多看看TriggerBuilder的方法和其他擴充套件方法,我們就可以更熟悉的使用了,上面的例子只是一部分展示而已。
SimpleTrigger Misfire Instructions
SimpleTrigger有很多種方式通知quart.net需要做什麼在一個misfire發生的時候,這些通知被定義為MisfirePolicy.SimpleTrigger的常量,包括:SimpleTrigger的misfire通知常量說明:
- MisfireInstruction.IgnoreMisfirePolicy
- MisfirePolicy.SimpleTrigger.FireNow
- MisfirePolicy.SimpleTrigger.RescheduleNowWithExistingRepeatCount
- MisfirePolicy.SimpleTrigger.RescheduleNowWithRemainingRepeatCount
- MisfirePolicy.SimpleTrigger.RescheduleNextWithRemainingCount
- MisfirePolicy.SimpleTrigger.RescheduleNextWithExistingCount
如果我們使用動態的職能通知指令,SimpleTrigger基於配置和狀態動態的選擇misfire指令,SimpleTrigger.UpdateAfterMisfire()方法解釋了這些行為的具體細節。
當我們建立SimpleTriggers的時候,我們通過SimpleSchedulerBuilder制定misfire指令作為一個簡單排程的一部分:
trigger = TriggerBuilder.Create() .WithIdentity("trigger7", "group1") .WithSimpleSchedule(x => x .WithIntervalInMinutes(5) .RepeatForever() .WithMisfireHandlingInstructionNextWithExistingCount()) .Build();
由龐順龍最後編輯於:3年前
內容均為作者獨立觀點,不代表八零IT人立場,如涉及侵權,請及時告知。
相關文章
- Quartz.NET 2.x 文件翻譯 - Lesson 6:CronTrigger觸發模式quartz模式
- Quartz.NET 2.x 文件翻譯 - Lesson 4:更多Triggers觸發器說明quartz觸發器
- Quartz.NET 2.x 文件翻譯 - Lesson 8:SchedulerListenersquartz
- Quartz.NET 2.x 文件翻譯 - Lesson 9:JobStoresquartz
- Quartz.NET 2.x 文件翻譯 - Lesson 1:使用Quartzquartz
- Quartz.NET 2.x 文件翻譯 - Lesson 2:Jobs 和 Triggersquartz
- Quartz.NET 2.x 文件翻譯 - Lesson 7:TriggerListeners 和JobListenersquartz
- Quartz.NET 2.x 文件翻譯 - Lesson 10:Configuration, Resource Usage 和 SchedulerFactoryquartz
- Quartz.NET 2.x 文件翻譯 - Lesson 3:Jobs 和 Triggers深入瞭解quartz
- Quartz.NET 2.x 文件翻譯 - Lesson 11:Advanced (Enterprise) Features 高階功能quartz
- Quartz.NET 2.x 文件翻譯 - Lesson 12:Quartz的其他各種特性quartz
- Quartz.NET 2.x 文件翻譯-文章目錄quartz
- docker官方文件翻譯5Docker
- 文件翻譯器怎麼用?如何翻譯Word文件?
- MPAndroidChart文件翻譯Android
- 有ppt文件翻譯軟體嗎?如何翻譯整篇ppt文件
- Moya官方文件翻譯
- [譯]HTML&CSS Lesson5: 定位HTMLCSS
- 實用的Word文件翻譯方法分享,讓Word文件快速翻譯
- 怎麼翻譯整篇Excel文件?Excel文件翻譯一招搞定Excel
- 怎麼把Excel文件翻譯成中文?Excel文件翻譯方法介紹Excel
- docker官方文件翻譯3Docker
- docker官方文件翻譯2Docker
- docker官方文件翻譯1Docker
- influxdb官網文件翻譯UX
- SnapKit 中文文件翻譯APK
- rabbitmq 官方文件翻譯-2MQ
- docker官方文件翻譯4Docker
- Draft 文件翻譯 - API - ContentStateRaftAPI
- TailWind文件翻譯說明以及每日翻譯進度AI
- HTTPie 官方文件中文翻譯版HTTP
- SpringAop英文文件部分翻譯Spring
- Gin 框架中文文件(翻譯)框架
- BBNorm官方指導文件翻譯ORM
- 文件翻譯軟體怎麼用?怎麼把Excel文件翻譯成中文版Excel
- oc-plugin-book 文件協作翻譯外掛(類似 LearnKu.com 的文件翻譯)Plugin
- SQLAlchemy 2.0 中文文件翻譯完成SQL
- 重新翻譯版本|Redux-Reselect 文件Redux