文章出處

回到目錄

對于任務調度來說,越來越多的團隊選擇了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進行控制的,值得注意的是,如果你修改的時間表達式,需要從新啟動服務才會生效!

回到目錄


文章列表




Avast logo

Avast 防毒軟體已檢查此封電子郵件的病毒。
www.avast.com


arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()