我心中的核心组件(可插拔的AOP)~调度组件quartz.net续~任务管理器的开发

时间:2022-05-01 19:19:32

回到目录

对于任务调度来说,越来越多的团队选择了quartz,它在java和.net环境下表现都十分优秀,配置简单,功能强大,时间表达式配置灵活,但在使用时,还是感觉缺点什么,怎么说,你在服务器上安装了一个任务,然后然它们去运行,我们在客户端或者一个web网站里,如果对服务端的任务进行管理呢,这是一个大难题,而今天我要写的就是如何去实现这样一个任务管理器!

小知识

quartz为我们提供了远程模式,即可以监听一个端口,用来等待客户端去调用,呵呵

CrystalQuartz用来创建远程链接对象

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

效果预览

aaarticlea/png;base64,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" alt="" />

aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAxAAAAB8CAIAAAB2RcEWAAAK70lEQVR4nO3dTZLqOBYGUPbkrbAUBj3sPbCLnOVSiJ52dPQKegvuAa8op62fy59TQudExQvSGJDgyvpSNlmHGQCAosNvNwAAoHUCEwBAhcAEAFAhMAEAVAhMAAAVAhMAQIXABABQITABAFQITAAAFQITAECFwAQAUCEwAQBUCEwAABUCEwBAhcAEAFAhMAEAVAhMAAAVAhMAQIXABABQITABAFQITAAAFQITAECFwAQAUHH4AgCg6PAfAACKBCYAgAqBCQCgQmACAKgQmAAAKgQmAIAKgQkAoEJgAgCoEJgAACoEJgCACoEJAKBCYAIAqBCYAAAqBCYAgAqBCQCgQmACAKgQmAAAKgQmAIAKgQkAoEJgAgCoEJgAACoEJgCACoEJAKBCYAIAqBCYAAAqBCYAgAqBCQCgQmACAKgQmAAAKgQmAIAKgQkAoOLwBQBA0WFu2NfX1283gYaoB4gYZ6SM01NaIDDRDfUAEeOMlHF6SgsEJrqhHiBinJEyTk9pgcBEN9QDRIwzUsbpKS0QmOiGeoCIcUbKOD2lBQIT3VAPEDHOSBmnp7RAYKIb6gEixhkp4/SUFghMdEM9QMQ4I2WcntICgYluqAeIGGekjNNTWiAw0Q31ABHjjJRxekoLPjAwTdM0TdP2xykjvtvt9vF4LD8b73BXPRQ+l9xnl/sEq5/stSSCOz/phc9fLVol3anqSFlW7PbH5P5tVkKkp7kD+3bP7+/vZntKC3oNTNXpsLwlub26221ElQ8u24efTqf4/o89ZATlg2Mk+syxQ3+wMOafJRE54F4ul2mazudzuQHxtiXvDb4Vq4fc+1rzK7rDOzwWmJ4cNb/i3sC02rjaU2*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" alt="" />

说做就做

        /// <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进行控制的,值得注意的是,如果你修改的时间表达式,需要从新启动服务才会生效!

回到目录