Quartz.Net Cron Expression
2016-04-23 03:31
309 查看
正如标题所示,文章主要是围绕Quartz.Net作业调度框架话题展开的,内容出自博主学习官方Examples的学习心得与体会,文中难免会有错误之处,还请指出得以指教。
前面了解了一些基本触发器构造作业调度的基础例子,接下来本篇会学习到关于Cron表达式的触发器。
PS:ICronTrigger触发器所轮询的将是无限重复轮询。
一,还是先来看一下代码
IExample
无论如何,同样的我们需要得到调度实例对象:
定义作业类:
使用Cron表达式创建Cron触发器:
特别要记得的是开启调度:
看回去WithCronSchedule("0/30 * * * * ?"), 第一个参数针对是秒数(以空格分隔)
==> 0/30表示:最近一次可以整除30的点开始(30s,60s),比如你是在25s开启的,那么在第30s时候就会触发,并且每30秒一次,如果你是第35秒开启的,那么 在第60s时候会触发,并且也是30秒一次循环
==> 1/30表示:在0/30的基础上加多1秒触发,比如像上面的例子,触发的时间点是(31s,01s)以此类推,分子表示多加的秒数,分母表示循环周期
==>如果是一个整数,比如15,那么就是表示每到第15s这个点的时候触发,可以指定多个整数,比如0,30,那么0s(60s),30s这两个时机会触发。
二:WithCronSchedule分钟表示
将上面tirgger稍微改动一下:
WithCronSchedule("15 0/1 * * * ?") 指每1分钟的第15s时机触发
同理,相关用法请看上面解释。
三:WithCronSchedule时钟表示
将上面tirgger稍微改动一下:
WithCronSchedule("0 0/2 8-17 * * ?") 小时的表示:
==>8-17这样的时间段来指定,每天的8-17时每刚满2分钟执行一次。
==>10pm这样指定具体的小时点数,这里指定下午10点,即下午10点的这个时机触发。如果要指定一个小时内,比如想在晚上11点到12点之前执行,那么小时位可以写为23-0(不能写24)
四:WithCronSchedule日表示
将上面tirgger稍微改动一下:
同理,指的就是本月的1号和20号。
五:WithCronSchedule月表示
将上面tirgger稍微改动一下:
六:WithCronSchedule星期表示
将上面tirgger稍微改动一下:
同理,星期一到星期五触发。使用逗号就是分别指周几触发,比如周末触发就可以写为:
前面了解了一些基本触发器构造作业调度的基础例子,接下来本篇会学习到关于Cron表达式的触发器。
PS:ICronTrigger触发器所轮询的将是无限重复轮询。
一,还是先来看一下代码
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Quartz.Examples { /// <summary> /// Interface for examples. /// </summary> /// <author>Marko Lahma (.NET)</author> public interface IExample { string Name { get; } void Run(); } }
IExample
无论如何,同样的我们需要得到调度实例对象:
ISchedulerFactory sf = new StdSchedulerFactory(); IScheduler sched = sf.GetScheduler();
定义作业类:
IJobDetail job = JobBuilder.Create<SimpleJob>() .WithIdentity("job1", "group1") .Build();
使用Cron表达式创建Cron触发器:
ICronTrigger trigger = (ICronTrigger)TriggerBuilder.Create() .WithIdentity("trigger1", "group1") .WithCronSchedule("0/30 * * * * ?") .Build();
特别要记得的是开启调度:
DateTimeOffset ft = sched.ScheduleJob(job, trigger); sched.Start();
看回去WithCronSchedule("0/30 * * * * ?"), 第一个参数针对是秒数(以空格分隔)
==> 0/30表示:最近一次可以整除30的点开始(30s,60s),比如你是在25s开启的,那么在第30s时候就会触发,并且每30秒一次,如果你是第35秒开启的,那么 在第60s时候会触发,并且也是30秒一次循环
==> 1/30表示:在0/30的基础上加多1秒触发,比如像上面的例子,触发的时间点是(31s,01s)以此类推,分子表示多加的秒数,分母表示循环周期
==>如果是一个整数,比如15,那么就是表示每到第15s这个点的时候触发,可以指定多个整数,比如0,30,那么0s(60s),30s这两个时机会触发。
二:WithCronSchedule分钟表示
将上面tirgger稍微改动一下:
ICronTrigger trigger = (ICronTrigger)TriggerBuilder.Create() .WithIdentity("trigger2", "group1") .WithCronSchedule("15 0/1 * * * ?") .Build();
WithCronSchedule("15 0/1 * * * ?") 指每1分钟的第15s时机触发
同理,相关用法请看上面解释。
三:WithCronSchedule时钟表示
将上面tirgger稍微改动一下:
ICronTrigger trigger = (ICronTrigger)TriggerBuilder.Create() .WithIdentity("trigger3", "group1") .WithCronSchedule("0 0/2 8-17 * * ?") .Build();
WithCronSchedule("0 0/2 8-17 * * ?") 小时的表示:
==>8-17这样的时间段来指定,每天的8-17时每刚满2分钟执行一次。
==>10pm这样指定具体的小时点数,这里指定下午10点,即下午10点的这个时机触发。如果要指定一个小时内,比如想在晚上11点到12点之前执行,那么小时位可以写为23-0(不能写24)
四:WithCronSchedule日表示
将上面tirgger稍微改动一下:
ICronTrigger trigger = (ICronTrigger)TriggerBuilder.Create() .WithIdentity("trigger5", "group1") .WithCronSchedule("0,30 0/1 23-0 1,20 * ?") .Build();
同理,指的就是本月的1号和20号。
五:WithCronSchedule月表示
将上面tirgger稍微改动一下:
ICronTrigger trigger = (ICronTrigger)TriggerBuilder.Create() .WithIdentity("trigger5", "group1") .WithCronSchedule("0,30 0/1 23-0 1,20 1 ?") .Build();
六:WithCronSchedule星期表示
将上面tirgger稍微改动一下:
ICronTrigger trigger = (ICronTrigger)TriggerBuilder.Create() .WithIdentity("trigger6", "group1") .WithCronSchedule("0,30 * * ? * MON-FRI") .Build();
同理,星期一到星期五触发。使用逗号就是分别指周几触发,比如周末触发就可以写为:
ICronTrigger trigger = (ICronTrigger)TriggerBuilder.Create() .WithIdentity("trigger7", "group1") .WithCronSchedule("0,30 * * ? * SAT,SUN") .Build();
相关文章推荐
- 使用C/C++扩展Python
- 从头开始学习 Dojo,第 3 部分: 利用 Dijit 组件框架打造丰富的用户界面
- 从头开始学习 Dojo,第 2 部分: 使用 Dojo 掌握面向对象开发
- 从头开始学习 Dojo,第 1 部分: 开始 Dojo 开发
- Unity进阶技巧 - RectTransform详解
- 欢迎使用CSDN-markdown编辑器
- uGUI之AutoLayout详解——minHeight,preferredHeight,flexibleHeight
- crontab详解
- Asp.net 面向接口可扩展框架之核心容器(含测试代码下载)
- uinty3d Auto Layout(自动布局)
- 第三章:数据决定数据结构
- About Quartz.Net Build the environment and some example
- jdbc学习
- Unity Shaders and Effects Cookbook (4-4)在Cubemap 上使用 法线贴图 (法线贴图与反射)
- 直击2016上交会:开飞机、测脑电波 测试纸
- 解决 RecyclerView 自适应高度
- HDU 1114 完全背包
- 基因数据处理25之avocado安装
- jquery的事件委托
- 《用 Python 学微积分》笔记 2