對於SimpleTrigger你須要知道它的啓動老是在一個特殊的時間點或者有你設置的重複時間段中。直白來講,若是你想在2005年1月13日,正好上午11時23分54秒觸發,而後執行五次,每十秒鐘。併發
從這個描述中你並無發現什麼特別的內容對於SimpleTrigger:開啓時間,結束時間、重複次數、重複時間段。對於這些你指望的內容,僅用兩個注意來講明。ide
這個重複的次數能夠是0、任意正整數、常數。SimpleTrigger. RepeatIndefinitely(無限重複)。這重複間隔屬性值必須是TimeSpan.Zero或者正 TimeSpan值。注意重複間隔爲0的時候致使併發觸發(可能接近管理器可管理的極限)。ui
若是您還不熟悉DateTime類,你會發現它對於你計算觸發時間頗有幫助,依賴於你想建立時UTC時間(或結束時間UTC)。this
EndTimeUtc 屬性會限制你的重複次數。對於你不想計算起止時間之間時間片數量,而只執行沒十秒一次以及結束時間。spa
TriggerBuilder 來建立SimpleTrigger 實例並能操做主要屬性使用WithSimpleSchedule 擴展方法去設置屬性值。code
構建一個trigger 在一個時間點,不重複執行:blog
1 // trigger builder creates simple trigger by default, actually an ITrigger is returned 2 ISimpleTrigger trigger = (ISimpleTrigger) TriggerBuilder.Create() 3 .WithIdentity("trigger1", "group1") 4 .StartAt(myStartTime) // some Date 5 .ForJob("job1", "group1") // identify job with name, group strings 6 .Build()構建一個Trigger在一個時間點,每十秒執行一次,重複十次:ci
1 trigger = TriggerBuilder.Create() 2 .WithIdentity("trigger3", "group1") 3 .StartAt(myTimeToStartFiring) // if a start time is not given (if this line were omitted), "now" is implied 4 .WithSimpleSchedule(x => x 5 .WithIntervalInSeconds(10) 6 .WithRepeatCount(10)) // note that 10 repeats will give a total of 11 firings 7 .ForJob(myJob) // identify job with handle to its JobDetail itself 8 .Build();構建一個Trigger只執行一次,爲五分鐘之後啓動文檔
1 trigger = (ISimpleTrigger) TriggerBuilder.Create() 2 .WithIdentity("trigger5", "group1") 3 .StartAt(DateBuilder.FutureDate(5, IntervalUnit.Minute)) // use DateBuilder to create a date in the future 4 .ForJob(myJobKey) // identify job with its JobKey 5 .Build();構建一個Trigger每五分鐘執行一次一直執行22:00get
1 trigger = TriggerBuilder.Create() 2 .WithIdentity("trigger7", "group1") 3 .WithSimpleSchedule(x => x 4 .WithIntervalInMinutes(5) 5 .RepeatForever()) 6 .EndAt(DateBuilder.DateOf(22, 0, 0)) 7 .Build();構建一個Trigger一小時後啓動,每兩小時重複一次,一直執行
1 trigger = TriggerBuilder.Create() 2 .WithIdentity("trigger8") // because group is not specified, "trigger8" will be in the default group 3 .StartAt(DateBuilder.EvenHourDate(null)) // get the next even-hour (minutes and seconds zero ("00:00")) 4 .WithSimpleSchedule(x => x 5 .WithIntervalInHours(2) 6 .RepeatForever()) 7 // note that in this example, 'forJob(..)' is not called 8 // - which is valid if the trigger is passed to the scheduler along with the job 9 .Build();10 await scheduler.scheduleJob(trigger, job);
全部的Trigger使用TriggerBuilder簡潔的語言來書寫,並使用了WithSimpleSchedule方法,讓你能知道怎樣選擇構建參數,這些都在例子中給出。
SimpleTrigge也有一些指令信息能在在Quartz執行當misfire發生的時候(misfire詳細內容請參見相應的章節)。 這些指令定義在MisfirePolicy.SimpleTrigge做爲常量(在API文檔中有詳細的描述)。包括如下:
- MisfireInstruction.IgnoreMisfirePolicy
- MisfirePolicy.SimpleTrigger.FireNow
- MisfirePolicy.SimpleTrigger.RescheduleNowWithExistingRepeatCount
- MisfirePolicy.SimpleTrigger.RescheduleNowWithRemainingRepeatCount
- MisfirePolicy.SimpleTrigger.RescheduleNextWithRemainingCount
- MisfirePolicy.SimpleTrigger.RescheduleNextWithExistingCount
你能夠從早期的課程中去了解 MisfirePolicy.SmartPolicy 的使用,而且這些指令爲全部的Trigger所使用。
它是很是簡單的使用起來。SimpleTrigger 能夠動態的選擇在MISFIRE 指令根據配置信息以及狀態信息。關於SimpleTrigger.UpdateAfterMisfire()文檔中已經解釋了其執行的細節。
當你正在構建SimpleTriggers時候,你能夠指定MisFire指令做爲schedule 一部分:
1 trigger = TriggerBuilder.Create() 2 .WithIdentity("trigger7", "group1") 3 .WithSimpleSchedule(x => x 4 .WithIntervalInMinutes(5) 5 .RepeatForever() 6 .WithMisfireHandlingInstructionNextWithExistingCount()) 7 .Build()