触发器是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学习笔记(三) 简单触发器的更多相关文章

  1. JSP学习笔记(三):简单的Tomcat Web服务器

    注意:每次对Tomcat配置文件进行修改后,必须重启Tomcat 在E盘的DATA文件夹中创建TomcatDemo文件夹,并将Tomcat安装路径下的webapps/ROOT中的WEB-INF文件夹复 ...

  2. JAVA WEB学习笔记(三):简单的基于Tomcat的Web页面

    注意:每次对Tomcat配置文件进行修改后,必须重启Tomcat 在E盘的DATA文件夹中创建TomcatDemo文件夹,并将Tomcat安装路径下的webapps/ROOT中的WEB-INF文件夹复 ...

  3. 加壳学习笔记(三)-简单的脱壳思路&amp;调试思路

    首先一些windows的经常使用API:   GetWindowTextA:以ASCII的形式的输入框   GetWindowTextW:以Unicaode宽字符的输入框   GetDlgItemTe ...

  4. ZooKeeper学习笔记三:使用ZooKeeper实现一个简单的配置中心

    作者:Grey 原文地址:ZooKeeper学习笔记三:使用ZooKeeper实现一个简单的配置中心 前置知识 完成ZooKeeper集群搭建以及熟悉ZooKeeperAPI基本使用 需求 很多程序往 ...

  5. Quartz定时任务学习(二)web应用/Quartz定时任务学习(三)属性文件和jar

    web中使用Quartz 1.首先在web.xml文件中加入 如下内容(根据自己情况设定) 在web.xml中添加QuartzInitializerServlet,Quartz为能够在web应用中使用 ...

  6. java之jvm学习笔记三(Class文件检验器)

    java之jvm学习笔记三(Class文件检验器) 前面的学习我们知道了class文件被类装载器所装载,但是在装载class文件之前或之后,class文件实际上还需要被校验,这就是今天的学习主题,cl ...

  7. VSTO学习笔记(三) 开发Office 2010 64位COM加载项

    原文:VSTO学习笔记(三) 开发Office 2010 64位COM加载项 一.加载项简介 Office提供了多种用于扩展Office应用程序功能的模式,常见的有: 1.Office 自动化程序(A ...

  8. 学习笔记(三)--->《Java 8编程官方参考教程(第9版).pdf》:第十章到十二章学习笔记

    回到顶部 注:本文声明事项. 本博文整理者:刘军 本博文出自于: <Java8 编程官方参考教程>一书 声明:1:转载请标注出处.本文不得作为商业活动.若有违本之,则本人不负法律责任.违法 ...

  9. muduo网络库学习笔记(三)TimerQueue定时器队列

    目录 muduo网络库学习笔记(三)TimerQueue定时器队列 Linux中的时间函数 timerfd简单使用介绍 timerfd示例 muduo中对timerfd的封装 TimerQueue的结 ...

  10. angular学习笔记(三十)-指令(10)-require和controller

    本篇介绍指令的最后两个属性,require和controller 当一个指令需要和父元素指令进行通信的时候,它们就会用到这两个属性,什么意思还是要看栗子: html: <outer‐direct ...

随机推荐

  1. php 设计模式(转)

    PhpDesignPatterns [PHP 中的设计模式] 一. Introduction[介绍] 设计模式:提供了一种广泛的可重用的方式来解决我们日常编程中常常遇见的问题.设计模式并不一定就是一个 ...

  2. 【转】Socket接收字节缓冲区

    原创本拉灯 2014年04月16日 10:06:55 标签: socket / 数据包 4448 我们接收Socket字节流数据一般都会定义一个数据包协议( 协议号,长度,内容),由于Socket接收 ...

  3. Tips_关闭按钮的简单实现 && Felx实现水平垂直居中

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  4. Java课堂笔记(一):Java基础

    本篇博客将对Java中的数据类型.操作符,常量与变量和数组进行介绍.这些内容都是Java中最基本的知识,也是初学Java时最开始就需要了解的东西. Java数据类型 Java是一种强类型的语言,这就意 ...

  5. Vue 中动态添加class(使用v-bind:class)

    今天在Vue中动态修改类名,元素的样式就是不改变,类名也没有加上去,里面的问题具体我还是不太清楚,有可能是因为自己不认真,把 :class= 后面的内容的格式给整错了,下面将正确的做法记录一下,便于以 ...

  6. 【ASP】session实现购物车

    1.问题提出 利用session内置对象,设计并实现一个简易的购物车,要求如下: 1)利用用户名和密码,登录进入购物车首页 2)购物首页显示登录的用户名以及该用户是第几位访客.(同一用户的刷新应该记录 ...

  7. centos7 mysql自动备份

    MySQL自动备份shell脚本   在数据库的日常维护工作中,除了保证业务的正常运行以外,就是要对数据库进行备份,以免造成数据库的丢失,从而给企业带来重大经济损失.通常备份可以按照备份时数据库状态分 ...

  8. requirejs + sass 实现的前端及 grunt 自动化构建

    对于 现在的 vue . react .webpack 来说也许有点旧了,有时候,越简单的技术越可靠,备份一下 module.exports = function(grunt) { // Projec ...

  9. Linux常用服务器搭建

    1.Linux常用服务器构建-ftp服务器 ftp服务器 FTP 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为“文传协议”. 用于Internet上的控制文件 ...

  10. JavaScript 功能类 Url.js

    简书原文 这个类的主要目的是为了方便平时编码中的Url类型的数据操作 Github 全局名称 全局名称是由源码的最后一行代码确定的,默认为Url,如存在相同名称的对象会抛出异常: 可以通过 requi ...