项目现状:
有若干定时程序需要自启动运行,为了简便程序部署等问题,采取这种办法把定时程序集中管理到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统一调度。