前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >开源分享之Quartz.NET 一个优秀的作业调度框架

开源分享之Quartz.NET 一个优秀的作业调度框架

作者头像
.Net框架学苑
修改2019-07-15 18:45:52
7090
修改2019-07-15 18:45:52
举报
文章被收录于专栏:.Net框架学苑.Net框架学苑

今天,我们分享一个优秀的作业调度框架,并基于此框架作出适用于服务器作业的结构设计。

假设我们现在需要在服务器中,每隔一分钟对Session的过期数据作清理,对数据库执行一个存储过程DeleteExpiredSessions,来达到定时做过期数据清理的作用,在这种情况下,我们如何设计并使用Quartz.net呢?

首先我们先搞清楚什么是Quartz.net?

Quartz.NET是一个开源的作业调度框架,非常适合在平时的工作中,定时轮询数据库同步,定时邮件通知,定时处理数据等,它允许开发人员根据时间间隔(或天)来调度作业。

为什么要使用Quartz?

我们经常会有这样的应用场景:需要定时轮询某些符合条件的数据,在达到一定条件的时候,对数据做出一定的处理,比如:上面哪个数据清理的需求。

下面结合我的项目中的使用给大家分享:

以下实例包括以下技术点:单一实例模式、NLog使用方法、模板类、抽象类、抽象方法、接口、Cron表达式,,,

由于目前夜深了,我必须在短时间内写完此文章,给大家作一个引导性指引即可,所以,我就不当夜猫了,架构设计图就不画了,直接Show You The Code

由上图可以知道,我们整体的结构看类名基本猜测出来。

首先,我们先起一个模板类JobService,定义抽象的操作,实现类自己通过重写GetTrigger()去定义触发的时间。

接下来,我们来看看一个实现类ExpiredSessionsJobService,它定义了每60秒就触发一次,当然这个时间定义,我们还可以用Cron表达式,可以用这类写法:

ICronTrigger CronTrigger = new Quartz.Impl.Triggers.CronTriggerImpl(JobName, GroupName, "0/60 * * * * ?");

Cron表达式

quartz中的cron表达式和Linux下的很类似,比如 "/5 * * ? * * *" 这样的7位表达式,最后一位年非必选。

表达式从左到右,依此是秒、分、时、月第几天、月、周几、年。下面表格是要遵守的规范:

实例介绍

”0 0 10,14,16 * * ?" 每天10点,14点,16点 触发。

"0 0/5 14,18 * * ?" 每天14点或18点中,每5分钟触发 。

字段名

允许的值

允许的特殊字符

Seconds

0-59

, - * /

Minutes

0-59

, - * /

Hours

0-23

, - * /

Day of month

1-31

, - * ? / L W

Month

1-12 or JAN-DEC

, - * /

Day of week

1-7 or SUN-SAT

, - * ? / L #

Year

空, 1970-2099

, - * /

特殊字符

解释

,

或的意思。例:分钟位 5,10 即第5分钟或10分都触发。

/

a/b。 a:代表起始时间,b频率时间。 例; 分钟位 3/5, 从第三分钟开始,每5分钟执行一次。

*

频率。 即每一次波动。 例;分钟位 * 即表示每分钟

-

区间。 例: 分钟位 5-10 即5到10分期间。

?

任意值 。 即每一次波动。只能用在DayofMonth和DayofWeek,二者冲突。指定一个另一个一个要用?

L

表示最后。 只能用在DayofMonth和DayofWeek,4L即最后一个星期三

W

工作日。 表示最后。 只能用在DayofWeek

#

4#2。 只能用DayofMonth。 某月的第二个星期三

具体的业务处理类是ExpiredSessionsJob,它必须实现IJob,Execute方法为具体业务方法,实现作业的内容;

快12点了,我们来看看结果就睡了吧:

我们还可以新建一个ASP.NET WEBSITE,并引入CrystalQuartz.Remote包,生成后台可监控的管理平台。

由于撰写文章的时间有限,如果有兴趣进一步深入研究作业调度框架的同学,有什么疑问可以留言。

官方学习文档:http://www.quartz-scheduler.net/documentation/index.html

使用实例介绍:http://www.quartz-scheduler.net/documentation/quartz-2.x/quick-start.html

官方的源代码下载:http://sourceforge.net/projects/quartznet/files/quartznet/

扫码关注我们,我们学的不仅是框架,更是梦想!更多技术文章查看 http://letyouknow.net/
扫码关注我们,我们学的不仅是框架,更是梦想!更多技术文章查看 http://letyouknow.net/
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-05-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 dotNet框架学苑 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Cron表达式
    • 实例介绍
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档