ASP.NET MVC5+EF6+EasyUI 后台管理系统(84)-Quartz 作业调度用法详解一
系列目录
前言
我从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秒一次真男人
.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 后台管理系统(1)-前言与目录(转)
开发工具:VS2015(2012以上)+SQL2008R2以上数据库 您可以有偿获取一份最新源码联系QQ:729994997 价格 666RMB 升级后界面效果如下: 日程管理 http://ww ...
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(1)-前言与目录(持续更新中...)
开发工具:VS2015(2012以上)+SQL2008R2以上数据库 您可以有偿获取一份最新源码联系QQ:729994997 价格 666RMB 升级后界面效果如下: 任务调度系统界面 http: ...
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(63)-Excel导入和导出-自定义表模导入
系列目录 前言 上一节使用了LinqToExcel和CloseXML对Excel表进行导入和导出的简单操作,大家可以跳转到上一节查看: ASP.NET MVC5+EF6+EasyUI 后台管理系统(6 ...
- ASP.NET MVC5+EF6+EasyUI 后台管理系统-WebApi的用法与调试
1:ASP.NET MVC5+EF6+EasyUI 后台管理系统(1)-WebApi与Unity注入 使用Unity是为了使用我们后台的BLL和DAL层 2:ASP.NET MVC5+EF6+Easy ...
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(51)-系统升级
系统很久没有更新内容了,期待已久的更新在今天发布了,最近花了2个月的时间每天一点点,从原有系统 MVC4+EF5+UNITY2.X+Quartz 2.0+easyui 1.3.4无缝接入 MVC5+E ...
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(58)-DAL层重构
系列目录 前言:这是对本文系统一次重要的革新,很久就想要重构数据访问层了,数据访问层重复代码太多.主要集中增删该查每个模块都有,所以本次是为封装相同接口方法 如果你想了解怎么重构普通的接口DAL层请查 ...
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(34)-文章发布系统①-简要分析
系列目录 最新比较闲,为了学习下Android的开发构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(1)-前言与,虽然有点没有目的的学习,但还是了解了Andro ...
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(54)-工作流设计-所有流程监控
系列目录 先补充一个平面化登陆页面代码,自己更换喜欢的颜色背景 @using Apps.Common; @{ Layout = null; } <!DOCTYPE html> <ht ...
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(56)-插件---单文件上传与easyui使用fancybox
系列目录 https://yunpan.cn/cZVeSJ33XSHKZ 访问密码 0fc2 今天整合lightbox插件Fancybox1.3.4,发现1.3.4版本太老了.而目前easyui 1 ...
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(38)-Easyui-accordion+tree漂亮的菜单导航
系列目录 本节主要知识点是easyui 的手风琴加树结构做菜单导航 有园友抱怨原来菜单非常难看,但是基于原有树形无限级别的设计,没有办法只能已树形展示 先来看原来的效果 改变后的效果,当然我已经做好了 ...
随机推荐
- 分布式锁与实现(二)——基于ZooKeeper实现
引言 ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件.它是一个为分布式应用提供一致性服务的软件,提 ...
- TFS下载文件已损坏问题
近日在把一个数千人使用的TFS环境进行机房迁移时,从现有的服务器集群中整体迁移到另外一个服务器集群中,经过周密的设计迁移方案,充分验证方案中的各个关键过程,最终在几乎对数千人用户完全透明,没有任何感知 ...
- Quartz (一)
1 核心接口 1.1 Scheduler---核心调度器 1.2 Job---任务 1.3 JobDetail---任务描述 1.4 Trigger---触发器 2 触发器 Tigger(CornTr ...
- 微软Build 2017第二天 .NET Standard 2.0 Preview 的客户端跨平台
微软公司一年一度的开发者大会,即“Microsoft Build 2017”在总部西雅图正式开幕.按照官方安排,本次大会将持续 3 天,主题围绕微软公司各项最新技术成果的展示和研讨,包括与微软相关的产 ...
- Socket中的异常和参数设置
1.常见异常 1.java.net.SocketTimeoutException . 这个异 常比较常见,socket 超时.一般有 2 个地方会抛出这个,一个是 connect 的 时 候 , 这 ...
- Listener与Filter
一.监听器Listener javaEE的13们规范中 包括servlet技术和jsp技术 servlet规范中包括三门技术:(servlet的三大组件) servelt技术 Listener技术 ...
- mac Ubuntu 设置快捷进入目录
在我们实际工作中,好多时间需要经常性的进入某个目录查看文件等等之类的操作. 好多时候我们都是在终端一级一级的进入目录,相比较Windows的快捷方式有点繁琐. 废话少说,下面就是设置快捷方式的方法: ...
- QA技术概览
• 页面测试 页面测试,顾名思义,用来测试页面的表示和前端功能.这同时涉及单元测试和集成测试.我们会用Mocha 进行页面测试. • 跨页测试 跨页测试是对从一个页面转到另一个页面的功能的测试.比如电 ...
- javaWeb学习总结(8)- jsp指令(3)
一.JSP指令简介 一.JSP指令简介 JSP指令(directive)是为JSP引擎而设计的,它们并不直接产生任何可见输出,而只是告诉引擎如何处理JSP页面中的其余部分. 在JSP 2.0规范中共定 ...
- 纯CSS3实现loading正在加载。。。
场景分析:随着我司专职前端切图人员离职,切图的活重新落到我们小组团队成员的日常任务list里面,加上我们小组 7个前端 基本都是后台转的前端 (赶鸭子上架 前端现在需求量大 没办法) 加上自己也将就一 ...