ASP.NET MVC5+EF6+EasyUI 后台管理系统(84)-Quartz 作业调度用法详解一
来源:互联网 发布:风冷冷凝器设计软件 编辑:程序博客网 时间:2024/05/21 21:40
前言
我从Quartz2.0开始使用,并对其进行了封装了界面,可以参考 http://www.cnblogs.com/ymnets/p/5065154.html
最近拿出来进行了优化,并升级到最新版,温故而知新嘛
当初教程较少,并且是英文,现在很多地方都有中文的教程也是学习起来事半功倍
Quartz能实现什么?
他类似于SQL Server的代理与Timer定时器:
1.指定时间执行一条SQL语句或存储过程
2.指定时间发送邮件(执行一个C#方法)
3.有规律的定时执行想要做的事情(通过配置Cron表达式来实现),如:每个星期1,3,5给用户发送一条短信
4.作业任务他可以被暂停,挂起,停止
5.作业任务可以远程被操作管理,数据库保存(支持多种数据库包括:SqlServer,Sqlite,Oracle,Mysql,Firebird)
使用方法
从Nuget包直接安装即可
PM>Install-Package Quartz
简单的实现
我们新建一个控制台程序,并安装Quartz包
入口代码:
using Quartz;using Quartz.Impl;using System;namespace QuartzTest{ class Program { static void Main(string[] args) { // First we must get a reference to a scheduler ISchedulerFactory sf = new StdSchedulerFactory(); IScheduler sched = sf.GetScheduler(); IJobDetail job = JobBuilder.Create<HelloJob>() .WithIdentity("job1", "group21") .Build(); //什么时候开始执行 DateTime runTime = DateTime.Now; ITrigger trigger = TriggerBuilder.Create() .WithIdentity("trigger1", "group1") .StartAt(runTime) .WithSimpleSchedule(x => x .WithIntervalInSeconds(1) //1秒一次真男人 .RepeatForever())//无限循环 .Build(); sched.ScheduleJob(job, trigger); //启动任务 sched.Start(); } }}
using Quartz;using System;using System.Threading.Tasks;namespace QuartzTest{ /// <summary> /// This is just a simple job that says "Hello" to the world. /// </summary> /// <author>Bill Kratzer</author> /// <author>Marko Lahma (.NET)</author> public class HelloJob : IJob { /// <summary> /// Called by the <see cref="IScheduler" /> when a /// <see cref="ITrigger" /> fires that is associated with /// the <see cref="IJob" />. /// </summary> public void Execute(IJobExecutionContext context) { Console.WriteLine("Hello Quartz"); // Say Hello to the World and display the date/time } }}
运行结果:
您也可以用表达式的形式来运行:
ITrigger trigger2 = TriggerBuilder.Create() .WithIdentity("trigger2", "group1") .StartAt(runTime) .WithCronSchedule("/1 * * ? * *") //时间表达式,1秒一次 .Build(); sched.ScheduleJob(job, trigger2);
效果也是一样的!
下面我们来看一个类图:
这个类图描述了,Quartz运行的基本原理
如何学习其表达式
我们无需要刻意去背诵他表达式的含义http://cron.qqe2.com/ 界面展示的配置
可以通过界面的操作来看到生成表达式,使用几次就很少明白。
后台封装成界面,更加无需要去记得表达式,通过界面的配置即可
当然你需要知道字符代表的意思,如:*,?等符号,跟通配符有点类似,可以百度
注:实际上我们后面要做的功能也是基于这种界面,然后手选后将生成的表达式作为运行的定时器而已
总结
Quartz比Timer定时器好用多了,定时器还要部署windows任务
1.HelloJob集成了类图中所示的IJob接口并实现了void Execute(IJobExecutionContext context);方法,这是必须的!
2.由StdSchedulerFactory.GetDefaultScheduler();来获得一个调度器
3.把任务加入到触发器
4.开启任务,自动跑起来
官方链接:
Quartz.Net官方2.X教程 http://www.quartz-scheduler.net/documentation/quartz-2.x/tutorial/index.html
Quartz.Net源代码 https://github.com/quartznet/quartznet
文章代码:
链接:http://pan.baidu.com/s/1pKP6c2Z 密码:dudi
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(84)-Quartz 作业调度用法详解一
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(85)-Quartz 作业调度用法详解二
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(86)-日程管理-fullcalendar插件用法
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(86)-日程管理-fullcalendar插件用法
- ASP.NET MVC5+EF6+EasyUI 后台管理系统--任务调度系统解析
- ASP.NET MVC5+EF6+EasyUI 后台管理系统
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(7)-MVC与EasyUI DataGrid
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(50)-Easyui 扁平化皮肤
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(52)-美化EasyUI皮肤和图标
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(83)-Easyui Datagrid 行内编辑扩展
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(18)-权限管理系统-表数据
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(19)-权限管理系统-用户登录
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(22)-权限管理系统-模块导航制作
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(28)-系统小结
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(34)-文章发布系统①-简要分析
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(35)-文章发布系统②-构建项目
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(36)-文章发布系统③-kindeditor使用
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(60)-系统总结
- ASP.NET MVC5+EF6+EasyUI 后台管理系统 (源码购买说明)
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(81)-数据筛选(万能查询)
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(82)-Easyui Datagrid批量操作(编辑,删除,添加)
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(83)-Easyui Datagrid 行内编辑扩展
- 复杂进销存样例
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(84)-Quartz 作业调度用法详解一
- FullCalendar 日历插件中文说明文档
- 日程管理 FullCalendar
- CSS中的时间
- SQL Server 创建表 添加主键 添加列常用SQL语句
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(85)-Quartz 作业调度用法详解二
- 支付宝支付
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(999)-如何使用这个系统来开发?
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(86)-日程管理-fullcalendar插件用法