作業調度框架 Quartz.NET 2.0 StepByStep(2)


通過上一篇文章,相信大家對Quartz.Net有了基本的了解,並可以建立最簡單的服務了。本篇將着重講解其中的Trigger,也就是如何設定服務的觸發條件。

按照情景,我在工作中一般會遇到以下幾種情景

1.服務開始時執行

  這個Trigger我們在上篇的實例中已經使用過,話不多說,直接上代碼

ITrigger trigger = TriggerBuilder.Create().StartNow().Build()

2.在指定時間間隔內輪詢執行

   利用框架中自帶的SimpleTriggerImpl,就能輕松實現這類型觸發器構造,下面列出常用的幾個構造重載:

  • SimpleTriggerImpl(string name, int repeatCount, TimeSpan repeatInterval)
  • SimpleTriggerImpl(string name, DateTimeOffset startTimeUtc, DateTimeOffset? endTimeUtc, int repeatCount, TimeSpan repeatInterval)

   例如:

View Code
    SimpleTriggerImpl(string name, int repeatCount, TimeSpan repeatInterval)
 SimpleTriggerImpl(string name, DateTimeOffset startTimeUtc,
DateTimeOffset? endTimeUtc, int repeatCount, TimeSpan repeatInterval)

   這個觸發器的含義是,開始時間為立即開始(需要UTCNOW)+結束時間無+重復次數1(注意是重復次數JOB會執行兩次)+輪詢間隔10秒

3.日輪詢執行

   利用框架中自帶的DailyTimeIntervalTriggerImpl,就能輕松實現這類型觸發器構造,下面列出常用的幾個構造重載:

  • DailyTimeIntervalTriggerImpl(String name, TimeOfDay startTimeOfDayUtc, TimeOfDay endTimeOfDayUtc, IntervalUnit intervalUnit, int repeatInterval)
  • DailyTimeIntervalTriggerImpl(string name, DateTimeOffset startTimeUtc,DateTimeOffset? endTimeUtc, TimeOfDay startTimeOfDayUtc, TimeOfDay endTimeOfDayUtc, IntervalUnit intervalUnit, int repeatInterval)

    例如:

View Code
DailyTimeIntervalTriggerImpl trigger = new DailyTimeIntervalTriggerImpl("DailyTimeIntervalTrigger",DateTimeOffset.UtcNow,null, new TimeOfDay(1, 0, 0), new TimeOfDay(22, 01, 00), IntervalUnit.Minute, 1);
trigger.DaysOfWeek.Add(DayOfWeek.Monday);

    這個觸發器的含義是,開始時間為立即開始(需要UTCNOW)+結束時間無+每天凌晨1點開始每天22:01分結束+每分鍾輪詢+重復次數1+僅每周一執行

4.復雜的時間設定

   如果想構建有如SqlServerJob設置般靈活的時間設定,那么就需要用到CronTriggerImpl這個類了,使用方法很簡單,直接在構造里放入Cron表達式即可

ITrigger trigger = new CronTriggerImpl("CronTrigger", "TriggerGroup1", "0 0 12 * * ?");

  這個觸發器的含義是,每天中午12點執行

  注:這部分小弟未曾深入了解,加之這部分API也沒有修改,就不班門弄斧了。請自行搜索Cron表達式/Cron expression

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM