Quartz.NET学习笔记(三) 简单触发器
触发器是Quartz.NET的另外第一个核心元素,他有2种类型,简单触发器(Simple Trigger)和计划任务触发器(Cron Trigger), 一个触发器可以绑定一个任务。
通用触发器属性
- JobKey – 当前触发器绑定任务的唯一标识符
- StartTimeUtc – 触发器的生效开始时间
- EndTimeUtc – 触发器的生效结束时间
设置触发器的优先级
有些时候,你的程序中可能需要多个触发器,Quartz.NET的调度器可能在同一时间没有足够的资源来触发所有的触发器,这时候我们就需要给触发器设置优先级,让Quartz.NET帮助我们优先触发优先级高的触发器。
在声明触发器的时候,可以使用WithPriority方法为触发器指定一个优先级权重,权重越高的,调度器会优先触发
例:
ISchedulerFactory schedFact = new StdSchedulerFactory();
IScheduler sched = schedFact.GetScheduler();
IJobDetail job = JobBuilder.Create<FirstJob>()
.UsingJobData("MyName", "Lunan")
.WithIdentity("myJob")
.Build();
IJobDetail job2 = JobBuilder.Create<SecondJob>()
.UsingJobData("MyName", "Lunan")
.WithIdentity("myJob2")
.Build();
ITrigger trigger = TriggerBuilder.Create()
.WithIdentity("myTrigger")
.StartNow()
.WithPriority(8)
.Build();
ITrigger trigger2 = TriggerBuilder.Create()
.WithIdentity("myTrigger2")
.StartNow()
.WithPriority(999)
.Build();
sched.ScheduleJob(job, trigger);
sched.ScheduleJob(job2, trigger2);
sched.Start();
执行结果

简单触发器(Simple Trigger)
如果你的项目需求是一下2种类型,可以使用Quartz.NET中的简单触发器。
- 在某个时间点执行一次任务
- 在某个时间点开始执行任务,并之后每隔固定的时间,再次执行当前任务
在某个时间点触发一次任务就停止
ISimpleTrigger trigger3 = (ISimpleTrigger)TriggerBuilder.Create()
.WithIdentity("trigger3", "group1")
.StartAt(new DateTime(2017, 7, 12, 15, 30, 0))
.ForJob("job1", "group1")
.Build();
该任务会在2017-07-12 15:30:00被执行。
在某个时间点触发触发任务,并在之后每10分钟继续触发一次
ISimpleTrigger trigger4 = (ISimpleTrigger)TriggerBuilder.Create()
.WithIdentity("trigger4", "group1")
.StartAt(new DateTime(2017, 7, 12, 15, 30, 0))
.WithSimpleSchedule(x =>
{
x.WithIntervalInMinutes(10);
x.RepeatForever();
})
.ForJob("job1", "group1")
.Build();
该任务会在2017-07-12 15:30:00被执行,然后每10分钟运行一次,永不停止。
在某个时间点开始触发任务,并在之后每10分钟继续触发一次,触发10次
ISimpleTrigger trigger5 = (ISimpleTrigger)TriggerBuilder.Create()
.WithIdentity("trigger5", "group1")
.StartAt(new DateTime(2017, 7, 12, 15, 30, 0))
.WithSimpleSchedule(x =>
{
x.WithIntervalInMinutes(10);
x.WithRepeatCount(10);
})
.ForJob("job1", "group1")
.Build();
该任务会在2017-07-12 15:30:00被执行,然后每10分钟运行一次,运行10次。
注:这里需要注意,这个触发器会触发11次,15:30会执行一次,加上后面的10次,一共是11次。
在某个时间点开始触发任务,并在之后每10分钟继续触发一次,直到某个时间结束
ISimpleTrigger trigger7 = (ISimpleTrigger)TriggerBuilder.Create()
.WithIdentity("trigger7", "group1")
.StartAt(new DateTime(2017, 7, 12, 15, 30, 0))
.WithSimpleSchedule(x => x
.WithIntervalInMinutes(5)
.RepeatForever())
.EndAt(DateBuilder.DateOf(22, 0, 0))
.Build();
该任务会在2017-07-12 15:30:00被执行,然后每10分钟运行一次,直到当天的22:00结束。
从当前时间开始,一定时间之后,执行一次任务
ISimpleTrigger trigger6 = (ISimpleTrigger)TriggerBuilder.Create()
.WithIdentity("trigger6", "group1")
.StartAt(DateBuilder.FutureDate(5, IntervalUnit.Minute))
.ForJob("job1", "group1")
.Build();
该任务会在未来5分钟的时候,运行一次
Quartz.NET学习笔记(三) 简单触发器的更多相关文章
- JSP学习笔记(三):简单的Tomcat Web服务器
注意:每次对Tomcat配置文件进行修改后,必须重启Tomcat 在E盘的DATA文件夹中创建TomcatDemo文件夹,并将Tomcat安装路径下的webapps/ROOT中的WEB-INF文件夹复 ...
- JAVA WEB学习笔记(三):简单的基于Tomcat的Web页面
注意:每次对Tomcat配置文件进行修改后,必须重启Tomcat 在E盘的DATA文件夹中创建TomcatDemo文件夹,并将Tomcat安装路径下的webapps/ROOT中的WEB-INF文件夹复 ...
- 加壳学习笔记(三)-简单的脱壳思路&调试思路
首先一些windows的经常使用API: GetWindowTextA:以ASCII的形式的输入框 GetWindowTextW:以Unicaode宽字符的输入框 GetDlgItemTe ...
- ZooKeeper学习笔记三:使用ZooKeeper实现一个简单的配置中心
作者:Grey 原文地址:ZooKeeper学习笔记三:使用ZooKeeper实现一个简单的配置中心 前置知识 完成ZooKeeper集群搭建以及熟悉ZooKeeperAPI基本使用 需求 很多程序往 ...
- Quartz定时任务学习(二)web应用/Quartz定时任务学习(三)属性文件和jar
web中使用Quartz 1.首先在web.xml文件中加入 如下内容(根据自己情况设定) 在web.xml中添加QuartzInitializerServlet,Quartz为能够在web应用中使用 ...
- java之jvm学习笔记三(Class文件检验器)
java之jvm学习笔记三(Class文件检验器) 前面的学习我们知道了class文件被类装载器所装载,但是在装载class文件之前或之后,class文件实际上还需要被校验,这就是今天的学习主题,cl ...
- VSTO学习笔记(三) 开发Office 2010 64位COM加载项
原文:VSTO学习笔记(三) 开发Office 2010 64位COM加载项 一.加载项简介 Office提供了多种用于扩展Office应用程序功能的模式,常见的有: 1.Office 自动化程序(A ...
- 学习笔记(三)--->《Java 8编程官方参考教程(第9版).pdf》:第十章到十二章学习笔记
回到顶部 注:本文声明事项. 本博文整理者:刘军 本博文出自于: <Java8 编程官方参考教程>一书 声明:1:转载请标注出处.本文不得作为商业活动.若有违本之,则本人不负法律责任.违法 ...
- muduo网络库学习笔记(三)TimerQueue定时器队列
目录 muduo网络库学习笔记(三)TimerQueue定时器队列 Linux中的时间函数 timerfd简单使用介绍 timerfd示例 muduo中对timerfd的封装 TimerQueue的结 ...
- angular学习笔记(三十)-指令(10)-require和controller
本篇介绍指令的最后两个属性,require和controller 当一个指令需要和父元素指令进行通信的时候,它们就会用到这两个属性,什么意思还是要看栗子: html: <outer‐direct ...
随机推荐
- 二、自动化测试平台搭建-搭建jango环境
上篇说的是安装虚拟环境,后面的项目全部放在虚拟环境上 1.创建一个虚拟环境py3,进入虚拟环境 2.安装django包:pip install django==1.8.2 3.在家目录下的Deskto ...
- Android- APP 秒开
Android- APP 秒开 1. 启动APP 时白屏或者黑屏 现象:当启动APP 时,会有一个白屏或者黑屏一闪而过,然后才会显示出主界面. 这是因为,我们新打开一个应用,系统会为这个应用创建一个进 ...
- django自制后台左侧导航代码
自定义一个sort.py页面: 写入一下代码: class lanmusort(object): def __init__(self): self.arr=[] def lanmuget(self,o ...
- 修改 bug 总结
对于 elementui table 组件的排序 要求对每列数据进行排序 数据是 金额之类 数字的没问题 但是 针对 标题中有数字,字母,文字的时候 会排序错误 :sort-method=" ...
- LocalDate、LocalDateTime、LocalTime开发小结
在我之前的文章<[整理]Java 8新特性总结 >中有提到Date/Time API (JSR 310)对日期与时间的处理.它将服务端对时间的处理进行了统一,使得对时间的处理更加规范和统一 ...
- Python3 类和继承和组合
import random as r class Fish: def __init__(self): self.x = r.randint(0,10) self.y = r.randint(0,10) ...
- Python数据科学手册
Python数据科学手册(高清版)PDF 百度网盘 链接:https://pan.baidu.com/s/1KurSdjNWiwMac3o3iLrzBg 提取码:qogy 复制这段内容后打开百度网盘手 ...
- BZOJ1757 : Apple 偷苹果
设$f0[i][j][x][y][S]$表示盗贼位于$(i,j)$,守卫位于$(x,y)$,每棵苹果树苹果数量为$S$,盗贼先手时盗贼还能偷多少苹果. 设$f1[i][j][x][y][S]$表示盗贼 ...
- CoreException: Could not get the value for parameter compilerId for plugin execution default-compile: PluginResolutionException: Plugin org.apache.maven.plugins:maven-compiler-plugin:3.1
今天遇到一个奇怪的问题, 之前写好的代码, 更换环境后, 重新搭建的nexus, maven私服总是报错, 各种clean/update都不管用 原来是没写版本号, 后来加上3.1版本, 还是报错, ...
- 远程shell脚本执行工具类
/** * 远程shell脚本执行工具类 */public class RemoteShellExecutorUtils { private static final Logger logger = ...