背景
第一次遇到定时执行某些任务的需求时,很多朋友可能设计了一个小类库,这个类图提高了一个接口,然后由调度器调度所有注册的接口类型,我就是其中之一,随着接触的开源项目越来越多,我的某些开发习惯受到了影响,其中比较重要的一个是:先查看一下有没有现成的开源项目可以满足需要,如果有,就尽量使用。本文介绍一款任务调度框架:Quartz。
Quartz
最好的学习地址:http://www.quartz-scheduler.net/documentation/index.html。
Hello World!
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 7 using Quartz; 8 using Quartz.Impl; 9 10 namespace QuartzStudy 11 { 12 class TimeReporter : IJob 13 { 14 public void Execute(IJobExecutionContext context) 15 { 16 Console.WriteLine(string.Format("当前时间是:{0}", DateTime.Now)); 17 } 18 } 19 20 class Program 21 { 22 static void Main(string[] args) 23 { 24 var scheduler = StdSchedulerFactory.GetDefaultScheduler(); 25 scheduler.Start(); 26 27 var job = JobBuilder.Create<TimeReporter>() 28 .WithIdentity("reporter", "group-a") 29 .Build(); 30 var trigger = TriggerBuilder.Create() 31 .WithIdentity("test", "group-b") 32 .StartNow() 33 .WithSimpleSchedule(x => x 34 .WithIntervalInSeconds(1) 35 .RepeatForever()) 36 .Build(); 37 scheduler.ScheduleJob(job, trigger); 38 39 } 40 } 41 }
备注
认真阅读官方提高的文档,Quartz 保护的功能完全可以满足企业级项目。