1. 程式人生 > >.NET中Quartz任務排程器的簡單應用例項

.NET中Quartz任務排程器的簡單應用例項

1.首先從NuGet中安裝Quartz,安裝最新版本就OK

2.新建一個Job類實現Quart中的IJob介面用於執行業務邏輯,程式碼如下:

    class CheckUpdateJob : IJob
    {
       
        public async Task Execute(IJobExecutionContext context)
        {
            //在此處實現業務
        }
    }

3.新建一個任務執行類用於啟動任務,程式碼如下:

    class JobController
    {
        
//排程器 IScheduler scheduler; //排程器工廠 ISchedulerFactory factory; //執行時間間隔 private int checkInternal = int.Parse(ConfigurationManager.AppSettings["CheckInternal"]); public async Task Start() { factory = new StdSchedulerFactory(); scheduler
= await factory.GetScheduler();//建立一個任務 IJobDetail jobCheck = JobBuilder.Create<CheckUpdateJob>().WithIdentity("check", "other").Build(); //建立一個觸發器 ITrigger checkTrigger = TriggerBuilder.Create() .WithIdentity("check", "other") .WithSchedule(SimpleScheduleBuilder.Create().WithIntervalInSeconds(checkInternal
).RepeatForever()) .StartNow() .Build();
//把任務和觸發器加入排程器中 await scheduler.ScheduleJob(jobCheck, checkTrigger); //開始執行 await scheduler.Start(); } }

對於標黃色部分做簡單說明

CheckUpdateJob:毫無疑問就是你的Job類。從原始碼裡面看必須是需要實現IJob介面的類,原始碼如圖:

 

check:自定義的Job別名,當有很多的Job需要執行的時候,可以使用別名區分。

other:自定義分組別名,當你有多Job的時候可以把Job進行分組,例如:訂單,資料清理等;當你需要對Job管理的時候便會派上用場。

ITrigger 中的check,other道理同上

checkInternal:這個引數為輪詢間隔秒數,這裡我只做個簡單間隔秒數輪詢方式執行Job,其內建了豐富的方式。比如:每月的第幾號,每週的星期幾,上午或者下午時間點等

 其他更多的應用可自行度娘或者看官方文件吧!

4.最後呼叫Start()即可,程式碼如下:

        static void Main(string[] args)
        {
            JobController controller = new JobController();
            var t = controller.Start();
            t.Wait();
            Console.Read();
        }