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