我心中的核心組件(可插拔的AOP)~調度組件quartz.net續~任務管理器的開發


回到目錄

對於任務調度來說,越來越多的團隊選擇了quartz,它在java和.net環境下表現都十分優秀,配置簡單,功能強大,時間表達式配置靈活,但在使用時,還是感覺缺點什么,怎么說,你在服務器上安裝了一個任務,然后然它們去運行,我們在客戶端或者一個web網站里,如果對服務端的任務進行管理呢,這是一個大難題,而今天我要寫的就是如何去實現這樣一個任務管理器!

小知識

quartz為我們提供了遠程模式,即可以監聽一個端口,用來等待客戶端去調用,呵呵

CrystalQuartz用來創建遠程鏈接對象

  private static RemoteSchedulerProvider remoteSchedulerProvider = new CrystalQuartz.Core.SchedulerProviders.RemoteSchedulerProvider();
  remoteSchedulerProvider.SchedulerHost = System.Configuration.ConfigurationManager.AppSettings["SchedulerHost"];

效果預覽

說做就做

        /// <summary>
        /// 恢復開始任務
        /// </summary>
        /// <param name="jobName"></param>
        /// <param name="group"></param>
        /// <returns></returns>
        public ActionResult Start(string jobName, string group)
        {
            remoteSchedulerProvider.Scheduler.ResumeJob(new JobKey(jobName, group));
            return RedirectToAction("Index");
        }
        /// <summary>
        /// 暫停任務
        /// </summary>
        /// <param name="jobName"></param>
        /// <param name="group"></param>
        /// <returns></returns>
        public ActionResult Stop(string jobName, string group)
        {
            remoteSchedulerProvider.Scheduler.PauseJob(new JobKey(jobName, group));
            return RedirectToAction("Index");
        }

上面代碼可以實現界面中的“開始”和暫停“兩個功能,主要是對trigger進行控制的,值得注意的是,如果你修改的時間表達式,需要從新啟動服務才會生效!

回到目錄


免責聲明!

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



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