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