项目现状:
有若干定时程序需要自启动运行,为了简便程序部署等问题,采取这种办法把定时程序集中管理到webapi中跟随api发布
代码架构介绍:
新建一个类库,类库引用Quartz(Quartz.2.3.2),每个需要统一管理的程序新建一个文件,其中包括处理程序类和接口
类库中做一个接口静态类,便于api的Application_Start方法调用
其中JobScheduler类的静态方法如下:
public static void Start() { StdSchedulerFactory factory = new StdSchedulerFactory(); IScheduler scheduler = factory.GetScheduler();
/*-------------计划任务代码实现------------------*/ //创建任务1 IJobDetail job = JobBuilder.Create<CityData.CityDataCaiji>().Build(); //创建触发器1 ITrigger trigger = TriggerBuilder.Create().WithIdentity("TimeTrigger", "TimeGroup") .WithSimpleSchedule(t => t .WithIntervalInMinutes(5) .RepeatForever()) .Build();
//创建任务2 IJobDetail job1 = JobBuilder.Create<DataBaseBackup.DatabaseBackup>().Build(); //创建触发器2 ITrigger trigger1 = TriggerBuilder.Create().WithIdentity("TimeTrigger1", "TimeGroup1") .WithSimpleSchedule(t => t .WithIntervalInMinutes(10) .RepeatForever()) .Build(); //添加任务及触发器至调度器中 scheduler.ScheduleJob(job, trigger); scheduler.ScheduleJob(job1, trigger1); scheduler.Start();
}
每个定时程序分别差功能键自己的任务和触发器,由scheduler统一调度。 |