項目現狀:
有若干定時程序需要自啟動運行,為了簡便程序部署等問題,采取這種辦法把定時程序集中管理到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統一調度。