quartz.net任務調度:源碼及使用文檔


目錄:

1.quartz.net任務調度:源碼及使用文檔

2.quartz.net插件類庫封裝

前言

  前段時間把自己封裝quartz.net 類庫的過程總結到博客園,有網友想要看一下源碼,所以就把源碼傳到github上去了,今天把地址分享給大家,程序中單元測試,寫的太丑,所以就沒網上傳,故此我把使用文檔在這也分享給大家一下,有什么問題,請點擊我園子中的qq與我聯系。

   源碼地址:https://github.com/kmonkey9006/Quatrz.Task

 目的:

  方便任務調度 的創建,刪除,暫停與繼續操作;提高任務在系統的可維護性與可擴展性。

使用流程:

1.web.config設置時間間隔與開始時間(便於維護)  

<!--自動任務執行時間間隔(秒)by wyl-->
    <add key="ReDoPaySchedulerTimeBySeconds" value="86400" />
    <!--自動任務執行 by wyl-->
    <add key="ReDoPaySchedulerStartTime" value="3:10"/>

2.在使用處調用類庫方法:

2.1獲取任務調度執行時間間隔與開始執行時間(這些值可以在代碼中直接賦值)

 static int times = Convert.ToInt32(Synjones.Common.Config.Config.AppSettings("ReDoPaySchedulerTimeBySeconds"));
 static DateTime startTime = Convert.ToDateTime(Synjones.Common.Config.Config.AppSettings("ReDoPaySchedulerStartTime")).AddDays(1);

2.2創建任務調度

new QJob("standardsd", "jobid", "輪詢繳費", "XX").Handle(DoRePay).Start(startTime, times, 0);

注:standardsd:系統編碼(syscode)

       Jobid:任務id(jobid)

        輪詢繳費:任務名稱(name)

        山東大學:任務群組名稱(group)

        DoRePay:任務調度觸發動作。(action)

         startTime:任務開始時間(starttime)

         times:任務間隔時間(internaltimes)

         0:最大執行次數(0表示無限次)(maxtimes)    

3.在不停止服務端的情況下暫停與繼續任務

 修改任務持久化文件,默認地址為~/Files/jobs/

 當StateWorking時表示任務正常執行

 當StatePending/Empty時表示任務正常執行(注意大小寫,寫錯則按Working執行)

調用說明:

調用說明

對象初始化

New QJob(string syscode, string id, string name = "", string group = "")

參數說明

Syscode:系統編碼

Id:jobid

Name:任務名稱

Group:任務群組

 

其他說明

Syscode+jobid:標志者任務的唯一性

Name,group:可為空但建議寫上,以便於更容易操作任務持久化文件

StartTime:開始時間默認為 DateTime.Now.AddMinutes(1)

Maxtimes:最大執行次數默認為0

Internaltimes:時間間隔默認為1個小時

持久化文件存放地址賦值

JobFactory.Instance.SetPath(string path)

 

參數說明

文件路徑必須以@“\”結尾,不進行賦值默認地址為~\File\jobs\

任務觸發動作

 Handle(Action handler)和Handle(Action<IQJob> handler)

參數說明

兩者參數的卻別在於一個有回調參數(IQJOB),一個沒有參數

創建任務(1)

 Start(DateTime starttime, int internaltimes , int maxtimes)

參數說明

Starttime:開始時間

internaltimes :任務執行間隔

maxtimes :最大執行次數

 

創建任務(2)

 Start()

參數說明

直接執行創建job任務調度

移除任務

IQJob.Remove()

說明

根據IQJob進行刪除(syscoed與jobid確定其唯一性)

暫停任務

IQJob.Pause()

說明

根據IQJob進行暫停(syscoed與jobid確定其唯一性)

繼續任務

IQJob.Resume()

說明

根據IQJob進行Resume(syscoed與jobid確定其唯一性)

修改任務觸發動作

 JobFactory.Instance.Trigger(string system_code, Action action)

 JobFactory.Instance.Trigger(string system_code, Action<IQJob> action)

參數說明

system_code:系統編碼

Action:觸發動作

持久化操作

   JobFactory.Instance.Initialize();

說明

獲取持久化文件,進行反序列化,然后把對象進行任務調度創建。

 

注意:

(1)系統編碼和任務id組合必須唯一。

(2)開始執行時間最好在系統操作不頻繁時間段(在服務平台和山東大學我用的是310

(3)創建任務調度時,如果當前時間大於開始時間,任務在沒創建之前就會事先執行一次。所以希望在創建任務的時候開始時間不要用datetime.now。用指定時間或者用DateTime.Now.AddMinutes(1)

(4)基於(3)的說明,開始時間如果指定為2016-06-06 3:10 ,當在這時間之后如果服務器down掉,重新啟動系統時,不管是不是在3:10之后,系統均會執行一次

案例:

  
(1) new QJob("syscode", "jobid", "name", "group").Handle(job_handler).Start(DateTime.Now.AddSeconds(30), 2, 10);

(2) new QJob("syscode", "jobid", "name", "group").Handle(job_detail_handler).Start();

(3) new QJob("syscode", "jobid", "name", "group").Remove();

(4) new QJob("syscode", "jobid").Remove();

(5) new QJob("syscode", "jobid", "name", "group").Pause();

(6) new QJob("syscode", "jobid").Pause();

(7) new QJob("syscode", "jobid", "name", "group").Resume();

(8) new QJob("syscode", "jobid").Resume();


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM