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的更多相关文章

  1. Quartz.Net系列(六):Quartz五大构件Trigger之TriggerBuilder解析

    所有方法图: 1.Create.Build Create:创建一个TriggerBuilder Build:生成Trigger var trigger = TriggerBuilder.Create( ...

  2. 免费开源的DotNet任务调度组件Quartz.NET(.NET组件介绍之五)

    很多的软件项目中都会使用到定时任务.定时轮询数据库同步,定时邮件通知等功能..NET Framework具有“内置”定时器功能,通过System.Timers.Timer类.在使用Timer类需要面对 ...

  3. Quartz

    Quartz是一个开源的作业调度框架,它完全由Java写成,并设计用于J2SE和J2EE应用中.它提供了巨大的灵 活性而不牺牲简单性.你能够用它来为执行一个作业而创建简单的或复杂的调度. eg: ja ...

  4. Spring Quartz实现任务调度

    任务调度 在企业级应用中,经常会制定一些"计划任务",即在某个时间点做某件事情 核心是以时间为关注点,即在一个特定的时间点,系统执行指定的一个操作 任务调度涉及多线程并发.线程池维 ...

  5. Quartz.net持久化与集群部署开发详解

    序言 我前边有几篇文章有介绍过quartz的基本使用语法与类库.但是他的执行计划都是被写在本地的xml文件中.无法做集群部署,我让它看起来脆弱不堪,那是我的罪过. 但是quart.net是经过许多大项 ...

  6. Quartz.net开源作业调度框架使用详解

    前言 quartz.net作业调度框架是伟大组织OpenSymphony开发的quartz scheduler项目的.net延伸移植版本.支持 cron-like表达式,集群,数据库.功能性能强大更不 ...

  7. [Quartz笔记]玩转定时调度

    简介 Quartz是什么? Quartz是一个特性丰富的.开源的作业调度框架.它可以集成到任何Java应用. 使用它,你可以非常轻松的实现定时任务的调度执行. Quartz的应用场景 场景1:提醒和告 ...

  8. 关于Quartz.NET作业调度框架的一点小小的封装,实现伪AOP写LOG功能

    Quartz.NET是一个非常强大的作业调度框架,适用于各种定时执行的业务处理等,类似于WINDOWS自带的任务计划程序,其中运用Cron表达式来实现各种定时触发条件是我认为最为惊喜的地方. Quar ...

  9. Quartz.net 开源job调度框架(二)----定点执行

    在上一篇  Quartz.net 开源job调度框架(一) 中讲到了基本的使用以及配置job轮训数据执行 这种做法适用于对数据操作实时性要求不高的场景,在实际场景中还有一种比较常用的场景就是我们需要在 ...

随机推荐

  1. UDP如何实现可靠传输

    概述 UDP不属于连接协议,具有资源消耗少,处理速度快的优点,所以通常音频,视频和普通数据在传送时,使用UDP较多,因为即使丢失少量的包,也不会对接受结果产生较大的影响. 传输层无法保证数据的可靠传输 ...

  2. Android 9.0 Http不能访问网络

    最近在做公司产品,一期完成,打包给测试,然后....一台手机连服务器都访问不了看日志如下: UnityWebRequest返回code:0,显示Unknow error 服务器接口是http://非域 ...

  3. Postman使用方法示例

  4. Python 设计模式之建造者模式 Builder Pattern

    #引入建造者模式 肯德基的菜单上有 薯条, 鸡腿,鸡翅,鸡米花,可乐,橙汁,火腿汉堡,至尊虾汉堡,牛肉汉堡 , 鸡肉卷等这些单品,也有很多套餐. 比如 套餐1:鸡翅,至尊虾汉堡,可乐,薯条 套餐2:鸡 ...

  5. Flutter -------- 新手 WanAndroid 项目练习

    一个简单Flutter项目wanandroid,先前用Kotlin来开发过,适合新手练习. 用到的库 包含功能: http+数据解析 网络请求数据列表展示 Banner轮播 WebView跳转详情 D ...

  6. SpringMVC:HandlerInterceptor log 日志

    springMVC:HandlerInterceptor拦截器添加系统日志(权限校验)代码收藏 - LinkcOne - CSDN博客https://blog.csdn.net/qq_22815337 ...

  7. 快速识别Hash加密方式hashid

    快速识别Hash加密方式hashid hashid工具是用来识别不同类型的散列加密,进而判断哈希算法的类型.该工具的而语法格式如下所示: hashid [option] INPUT 其中,option ...

  8. 使用jquery循环并获取 json 数组的键/值对

    var resultJSON = '{"FirstName":"John","LastName":"Doe"," ...

  9. Docs-.NET-C#-指南-语言参考-关键字:C# 关键字

    ylbtech-Docs-.NET-C#-指南-语言参考-关键字:C# 关键字 1.返回顶部 1. C# 关键字 2017/03/07 关键字是预定义的保留标识符,对编译器有特殊意义. 除非前面有 @ ...

  10. Spring MVC 实例:Excel视图的使用

    对于Excel而言,Spring MVC所推荐的是使用AbstractXlsView,它实现了视图接口,从其命名也可以知道它只是一个抽象类,不能生成实例对象.它自己定义了一个抽象方法——buildEx ...