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轮训数据执行 这种做法适用于对数据操作实时性要求不高的场景,在实际场景中还有一种比较常用的场景就是我们需要在 ...
随机推荐
- NTT小结及原根求法
注意 由于蒟蒻实在太弱了~^_^~暂时无法完成证明,仅能写出简单版总结 与FFT的区别 \(NTT\)与\(FFT\)的代码区别就是把单位根换成了原根,从而实现无精度误差与浮点数的巨大常数 原根具有单 ...
- 【随记】安装SQL Server 2008 R2 提示创建usersettings/microsoft.sqlserver.configuration.landingpage.properties.se
在安装SQL Server 2008 R2 提示创建usersettings/microsoft.sqlserver.configuration.landingpage.properties.se.. ...
- SpringMVC返回一个JSON对象到界面
首先明确,在JavaScript中并没有类型这一说,只有一个类型就是var.我们要做的就是让JavaScript得到我们返回的一个对象让它以某种方式去处理数据. 前端代码 后台代码 @RequestB ...
- python反射hasattr getattr setattr delattr
反射 : 是用字符串类型的名字 去操作 变量 相比于用eval('print(name)') 留有 安全隐患 反射 就没有安全问题 hasattr 语法: hasattr(object, name)o ...
- 深度学习面试题18:网中网结构(Network in Network)
目录 举例 参考资料 网中网结构通过多个分支的运算(卷积或池化),将分支上的运算结果在深度上连接 举例 一个3*3*2的张量, 与3个1*1*2的卷积核分别same卷积,步长=1, 与2个2*2*2的 ...
- Nexus入门【转】
介绍 DevOps平台采用的介质服务器类型为NEXUS,NEXUS是一个强大的maven仓库管理器,它极大的简化了本地内部仓库的维护和外部仓库的访问. 一.配置Maven [root@meteor ~ ...
- Spring Boot TImer Schedule Quartz
Spring Boot 2.X(十二):定时任务-云栖社区-阿里云https://yq.aliyun.com/articles/723876?spm=a2c4e.11155472.0.0.2f8b3a ...
- autoComplete TextView
这个比较简单,只是将AutoCompleteTextView绑定一个ArrayAdapter就可以了. 界面布局: <?xml version="1.0" encoding= ...
- flutter drawer 自定义图标 icon 手动打开drawer
方法1:GlobalKey import "package:flutter/material.dart"; class Test extends StatefulWidget { ...
- 编写第一个dart程序hello dart
/* 入口方法的两种定义方式 main(){ print('hello dart'); } */ ///这也是一个注释 //表示main方法没有返回值 void main(){ print('hell ...