Quartz.Net—TriggerBuilder
TriggerBuilder
TriggerBuilder是一个建造者模式,链式建造。通过静态方法构建一个TriggerBuilder实例,然后再调用类方法Build()创建一个ITrigger的实现。
1、静态方法
public static TriggerBuilder Create()
{
return new TriggerBuilder();
}
TriggerBuilder链式构造开始方法。
2、触发的开始时间和结束时间。
DateTimeOffset时间偏移。 UTC是世界统一时间,会有一个当前时区的偏移,世界各地都有各自的偏移量,中国的是东八区。
TimeZoneInfo时区时间
public TriggerBuilder StartAt(DateTimeOffset startTimeUtc)
{
startTime = startTimeUtc;
return this;
}
public TriggerBuilder EndAt(DateTimeOffset? endTimeUtc)
{
endTime = endTimeUtc;
return this;
}
不设置这些时间,则一直执行。
3、制定Trigger和Job的关联关系。ForJob()
4、UsingJobData 附加信息
和JobBuilder中的一个作用。都是在具体执行的方法中可以拿到这个传进去的信息。
5、优先级 WithPriority
一个Job可以对应多个Trigger。当多个Trigger同一时间点出发,那么根据优先级判断。数字越大,优先级越高。
默认优先级是5
同一个任务有多个trigger。
触发先后顺序。
时间->优先级->字母排序
四大触发器
每一个解决一类问题。
1、WithSimpleSchedule
时分秒轮询,和timer一样。
一直循环,循环多少次,循环多久。(两个维度 时间(时分秒) 次数)
定时还钱,检查数据,更新状态等等。压缩redis等nosql进程内存。
withrepeatcount(n) 重复n+1次 但是底层又把n-1 所以最后还是n次
2、WithCalendarIntervalSchedule
只是扩展了SimpleScheduleBuilder,由于SimpleScheduleBuilder只是对时分秒轮询扩展,可以对年月日周轮询
3、WithDailyTimeIntervalSchedule
某一些时间段内执行多长时间一次。
每天8-10点 内 每半个小时执行一次
t => t.OnEveryDay().StartingDailyAt(TimeOfDay.HourAndMinuteOfDay(8,00)).EndingDailyAt(TimeOfDay.HourAndMinuteOfDay(10,00)).WithIntervalInMinutes(30)
周一到周五 两点执行一次
t => t.OnMondayThroughFriday ().StartingDailyAt(TimeOfDay.HourAndMinuteOfDay(2, 00)).EndingDailyAt(TimeOfDay.HourAndMinuteOfDay(2, 10)).WithIntervalInHours(1)
执行多少次结束
EndingDailyAfterCount
一周的哪几天
OnDaysOfTheWeek(DayOfWeek.Friday,DayOfWeek.Monday)(周五 周一)
4、WithCronSchedule
最推荐的方法,是linux平台的时间格式。使用字符串符号表达时间。几乎现在任务组件都是使用的这种格式。
ITrigger trigger = TriggerBuilder.Create().WithIdentity("trigger1", "group1").WithCronSchedule("0/5 * 8-22 ? * 1-5").Build();
cron语法
4.1、表达式分为七个部分
秒 Seconds 0-59 , - * /
分 Minutes 0-59 , - * /
小时 Hours 0-23 , - * /
月内日期 Day-of-Month 1-31 , - * ? / L W C
月 Month 1-12 , - * /
周内日期 Day-of-Week 1-7 , - * ? / L C #
年(可选字段) Year (可选字段) 1970-2099 , - * /
4.2、特殊字符含义
*:表示整个时间
/:表示增量 例如在秒上,
1/5(从第一秒开始,每五秒执行一次) 1秒 6秒 11秒 ....
0/5(从第零秒开始,每五秒执行一次) 0秒 5秒 10秒 ....
/5(从第零秒开始,每五秒执行一次) 0秒 5秒 10秒 ....
*/5(从第零秒开始,每五秒执行一次) 0秒 5秒 10秒 ....
, : 指定某几个值,假如放在秒伤 1,2,3,4 分别在第 1 2 3 4秒上执行。
-: 指定范围。1-5 就是从 1到5
------------------------------------------------------------------------------------------------------------
?:用在月内日期和周内日期中, 表示用他们两个中的一个。
#:用在周内日期上,表示该月第几个星期几
L:last 最后一个。每个月最后一天,或者每周最后一天
W:week工作日。 15W 每月15号最近的那一个工作日
C:这个是啥我也不知道。网上也没有找到。
在线编辑器
http://cron.qqe2.com/
Quartz.Net—TriggerBuilder的更多相关文章
- Quartz.Net系列(六):Quartz五大构件Trigger之TriggerBuilder解析
所有方法图: 1.Create.Build Create:创建一个TriggerBuilder Build:生成Trigger var trigger = TriggerBuilder.Create( ...
- 免费开源的DotNet任务调度组件Quartz.NET(.NET组件介绍之五)
很多的软件项目中都会使用到定时任务.定时轮询数据库同步,定时邮件通知等功能..NET Framework具有“内置”定时器功能,通过System.Timers.Timer类.在使用Timer类需要面对 ...
- Quartz
Quartz是一个开源的作业调度框架,它完全由Java写成,并设计用于J2SE和J2EE应用中.它提供了巨大的灵 活性而不牺牲简单性.你能够用它来为执行一个作业而创建简单的或复杂的调度. eg: ja ...
- Spring Quartz实现任务调度
任务调度 在企业级应用中,经常会制定一些"计划任务",即在某个时间点做某件事情 核心是以时间为关注点,即在一个特定的时间点,系统执行指定的一个操作 任务调度涉及多线程并发.线程池维 ...
- Quartz.net持久化与集群部署开发详解
序言 我前边有几篇文章有介绍过quartz的基本使用语法与类库.但是他的执行计划都是被写在本地的xml文件中.无法做集群部署,我让它看起来脆弱不堪,那是我的罪过. 但是quart.net是经过许多大项 ...
- Quartz.net开源作业调度框架使用详解
前言 quartz.net作业调度框架是伟大组织OpenSymphony开发的quartz scheduler项目的.net延伸移植版本.支持 cron-like表达式,集群,数据库.功能性能强大更不 ...
- [Quartz笔记]玩转定时调度
简介 Quartz是什么? Quartz是一个特性丰富的.开源的作业调度框架.它可以集成到任何Java应用. 使用它,你可以非常轻松的实现定时任务的调度执行. Quartz的应用场景 场景1:提醒和告 ...
- 关于Quartz.NET作业调度框架的一点小小的封装,实现伪AOP写LOG功能
Quartz.NET是一个非常强大的作业调度框架,适用于各种定时执行的业务处理等,类似于WINDOWS自带的任务计划程序,其中运用Cron表达式来实现各种定时触发条件是我认为最为惊喜的地方. Quar ...
- Quartz.net 开源job调度框架(二)----定点执行
在上一篇 Quartz.net 开源job调度框架(一) 中讲到了基本的使用以及配置job轮训数据执行 这种做法适用于对数据操作实时性要求不高的场景,在实际场景中还有一种比较常用的场景就是我们需要在 ...
随机推荐
- 第2组 团队Git现场编程实战
目录 组员职责分工(1 2分) github 的提交日志截图(2 1分) 程序运行截图(3 3分) 程序运行环境(4 1分) GUI界面(5 5分) 基础功能实现(6 10分) 鼓励有想法且有用的功能 ...
- 查看windows操作系统的默认编码【转】
在Windows平台下,进入DOS窗口,输入:chcp可以得到操作系统的代码页信息,你可以从控制面板的语言选项中查看代码页对应的详细的字符集信息. 例如: 我的活动代码页为:936,它对于的编码格式为 ...
- [提权]sudo提权复现(CVE-2019-14287)
2019年10月14日, sudo 官方在发布了 CVE-2019-14287 的漏洞预警. 0x00 简介 sudo 是所有 unix操作系统(BSD, MacOS, GNU/Linux) 基本集成 ...
- 浅析python-socket编程
1. 什么是socket? socket是套接字的英文名称, 我们知道在TCP/IP协议簇体系中,将网络状态分为了应用层.传输层.网络层.物理层等四种状态,而socket是与传输层密切相关的,其主要实 ...
- 两个int类型的数据相加,有可能会出现超出int的表示范围。
两个int类型的数据相加,有可能会出现超出int的表示范围. /* 移位运算符: <<(左移) 规律:一个操作数进行左移运算的时候,结果就是等于操作数乘以2的n次方,n就是左移 的位数. ...
- SQL中的xp_cmdshell拒绝访问
数据库备份作业的sql,,最后一步删除指定时间之前的文件夹.. 使用 xp_cmdshell 函数调用 RMDIR 命令删除过期文件夹,但返回拒绝访问.. 代码如下: DECLARE @PATH2 ...
- python技巧获取26个英语字母
import string string.ascii_uppercase # 获取26个大写字母 string.ascii_lowercase # 获取26个小写字母 string.ascii_let ...
- 第06组 团队Git现场编程实战
一.组员职责分工 队员姓名 主要分工 朱庆章 测评福州最受欢迎的商圈(参考人气) 陈梦雪 测评福州最受欢迎的商圈(参考人气) 关文涛 分别测评福州人均消费50以下,50-100.100-200.200 ...
- Perl字符贪吃蛇
一时兴起,想试试能不能用perl实现字符贪吃蛇,算法如下: 定义2个数组@bg.@snake,@bg用来显示整个界面,@snake从蛇头开始保存蛇的坐标点. 蛇每移动一次,新的坐标点放到@snake头 ...
- 微信JS-SDK分享功能的.Net实现代码
JS-SDK接口是什么? 为了方便开发者实现微信内的网页(基于微信浏览器访问的网页)功能,比如拍照.选图.语音.位置等手机系统的能力,并方便开发者直接使用微信分享.扫一扫等微信特有的能力,微信推出了J ...