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轮训数据执行 这种做法适用于对数据操作实时性要求不高的场景,在实际场景中还有一种比较常用的场景就是我们需要在 ...
随机推荐
- SpringMVC从Request域中获取数据
SpringMVC从Request域中获取数据的三种方式 SpringMVC环境自行搭建, 约定存在如下目录和文件:/WEB-INF/pages/success.jsp 方式一:传入Model对象 前 ...
- c#传不确定的参数个数,比如int型
a(params int[] ) 调用时a(1,2,3,4,5,6)
- 两个Double类型相减出现精度丢失问题
两个Double类型相减出现精度丢失问题 720.50-279.5=440.099999999 而不是440.1 解决方法,将数据库中的类型改为decimal类型,小数精确到2位
- F12找到页面某一元素所绑定的点击事件
比如我要查看银行账号这个标签所绑定的事件. 操作过程中使用的是谷歌浏览器 第一步:在该元素上右键→检查 第二步:点击Event Listeners 这样就能看到该元素绑定的所有事件了 第三步:展开cl ...
- iftop -i eth0 -B -F
iftop -i eth0 -B -F 108.51.5.220 1 https://www.cnblogs.com/kobexffx/p/11000337.html
- Manning Java Persistence with Hibernate & hibernate_in_action
Manning | Java Persistence with Hibernatehttps://www.manning.com/books/java-persistence-with-hiberna ...
- 表单在ios下输入框必须重压或长按才能唤起软键盘
解决方案: 一.在node_module里找到fastClick文件,然后找到focus方法,加一句focus方法即可解决:FastClick.prototype.focus = function(t ...
- PHP 对象接口
对象接口 (interface) 使用接口(interface),可以指定某个类必须实现哪些方法,但不需要定义这些方法的具体内容. 接口是通过 interface 关键字来定义的,就像定义一个标准的类 ...
- ionic4.x EventEmitter3的使用
安装: npm install --save eventemitter3 创建event.service import { Injectable } from '@angular/core'; // ...
- ISO/IEC 9899:2011 条款6.5.10——按位与操作符
6.5.10 按位与操作符 语法 1.AND-expression: equality-expression AND-expression equality-expression 约束 2.这些 ...