Quartz.net开源作业调度
2015-11-05 22:50
375 查看
Quartz.net开源作业调度框架使用详解
前言
quartz.net作业调度框架是伟大组织OpenSymphony开发的quartz scheduler项目的.net延伸移植版本。支持 cron-like表达式,集群,数据库。功能性能强大更不用说。下载项目文档官网:http://www.quartz-scheduler.net/
项目中需引用:Common.Logging.dll , Common.Logging.Core.dll , Quartz.dll
下面给大家分解下我最近做的关于计划调度的一个小项目,来辅助理解quartz.net的功能和常用方法。
View Code
3.继续改进(cron-like使用):前两个作业调度都太简单,如果我想在每小时的第10,20,25,26,33,54分钟,每分钟的第1,10,14秒执行一次。那么上面显然是不能满足的。这是我就把cron-like表达式引入进来,以实现各种时间纬度的调用。
View Code
note:这里执行的Execute方法参数IJobExecutionContext 中,会自动把作业调度的详细信息带过来,作业名称,作业组名,作业下次执行时间,作业执行时间等等,这里的内容也是至关重要的,比如根据作业组,作业名称我们可以从数据库找到相应的作业调度详细,更新操作数据库。
2、针对某个作业计划进行停止,启动。
/// <summary> /// 暂停指定任务计划 /// </summary> /// <returns></returns> public JsonResult StopScheduleJob(string jobGroup, string jobName) { try { scheduler = GetScheduler(); scheduler.PauseJob(new JobKey(jobName, jobGroup)); new WJ_ScheduleManage().UpdateScheduleStatus(new WJ_ScheduleEntity() { JobName = jobName, JobGroup = jobGroup, Status = (int)ADJ.Job.Entity.EnumType.JobStatus.已停止 }); return Json(new StatusView() { Status = 0, Msg = "停止任务计划成功!" }, JsonRequestBehavior.AllowGet); } catch (Exception ex) { DoApplication.WriteLogFile(ex.Message + "/r/n" + ex.StackTrace); return Json(new StatusView() { Status = -1, Msg = "停止任务将计划失败!" }, JsonRequestBehavior.AllowGet); } } /// <summary> /// 开启指定的任务计划 /// </summary> /// <returns></returns> public JsonResult RunScheduleJob(string jobGroup, string jobName) { try { var sm = new WJ_ScheduleManage().GetScheduleModel(new WJ_ScheduleEntity() { JobName = jobName, JobGroup = jobGroup }); AddScheduleJob(sm); sm.Status = (int)ADJ.Job.Entity.EnumType.JobStatus.已启用; new WJ_ScheduleManage().UpdateScheduleStatus(sm); scheduler = GetScheduler(); scheduler.ResumeJob(new JobKey(jobName, jobGroup)); return Json(new StatusView() { Status = 0, Msg = "启动成功!" }, JsonRequestBehavior.AllowGet); } catch (Exception ex) { DoApplication.WriteLogFile(ex.Message + "/r/n" + ex.StackTrace); return Json(new StatusView() { Status = -1, Msg = "启动失败!" }, JsonRequestBehavior.AllowGet); } }
最后注意:
1、这个项目完全使用啦cron-like表达式实现触发器配置,如果你对cron不了解,那么我上篇中有针对cron做介绍讲解,如果你对cron了解而没有一个合适的生成工具,那么入左上方2个群,找我。
2、这个项目部署在IIS中,那么就要设置应用程序池的回收机制为,永不回收,配置下,如果不会配置,入左上方2个群,找我。
分类: Quartz.Net
相关文章推荐
- 冒泡推导
- Ubuntu12.04 进不了图形界面 checking battery state virtualbox
- yycg之药品目录导出(二)+系统参数配置
- 惠普培训随笔
- 烂泥:haproxy学习之https配置
- opencv3 绘制一维直方图-灰度直方图的绘制
- java配置环境变量
- Understanding JVM Internals
- CNN反向求导推导
- java测试中单元测试中Junit、mock和代码覆盖率
- 有时候就是看不进论文-jQuery动画特效篇&MySQL
- Spring的特点
- Android5.0 SharedElement的使用
- C++、C#、java算法学习日记07----堆排序(HeapSort)
- opencv3 绘制二维直方图-H-S直方图
- C#构造函数调用其他构造函数
- nodejs相关--hexo搭建github博客
- 挨踢人的脚步(2015.11.05)
- Thinking in Java 整理笔记:通过异常处理错误
- jQuery选择器