C#定時調用的Quartz項目設計和實現

1.首先必須清楚一些概念:調度器,作業,定時觸發器,如下

2.關於一個Quartz定時調用的項目的設計和實現

  把需要的東西抽象出來,比如把作業的一些屬性,如作業的名稱等,如下

 1 public int id { get; set; }
 2 /// 任務名稱
 3 public string jobname { get; set; }
 4 
 5 /// job配置的時間
 6 public string jobcron { get; set; }
 7 
 8 /// job的分組的名稱
 9 public string jobgroup { get; set; }
10 
11 /// 作業當前的狀態,0.加入調度隊列 1.未加入調度隊列 2.暫停
12 public int jobtype { get; set; }
13 
14 public string jobtypename { get; set; }
15 
16 public string jobdescription { get; set; }
17 
18 /// 作業的開始時間
19 public DateTime createtime { get; set; }
20 
21 /// 0刪除,1使用
22 public int type { get; set; }
23 
24 public string jobtrigger { get; set; }
25 
26 public string jobtriggergroup { get; set; }
27 
28 ///作業的下次執行時間
29 
30 public DateTime nexttime { get; set; }
31 
32 /// 作業的上次執行時間
33 
34 public DateTime pretime { get; set; }
View Code

3.項目整體設計

 

 4.因爲是c#代碼,所以採用的是自託管的方式

  可以參考下面

  https://www.itsvse.com/thread-3454-1-1.html

5.把Quartz裏面的調度器,定時器,作業寫一個通用類

 public static class JobManager
{ 
        public static void CreateScheduler()
        {

            ISchedulerFactory schedulerFactory = new StdSchedulerFactory();
            sched = schedulerFactory.GetScheduler();

            sched.Start();

        }

        ///這邊的type類型是通過反射方式加載進來的job作業類型如2裏面的對象
        public static DateTimeOffset AddJob(Type jobType, string crons)
        {
            //創建作業的信息類
            IJobDetail jobCheck = JobBuilder.Create(jobType).
                WithIdentity(jobType.Name, jobDataGroup).
                UsingJobData(jobDataGroup, jobType.FullName)
                .Build();

            //創建時間篇
            ICronTrigger CronTrigger = new CronTriggerImpl(jobType.Name + jobtrigger, TriggerGroup, crons);//, crons
            return sched.ScheduleJob(jobCheck, CronTrigger);
        }
}
View Code

 6.總結,學習一個新東西先了解整體的框架和設計,再花時間去了解,其實源代碼裏面的demo是最好的

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章