1 关于Quartz的触发器

Quartz框架中的触发器的主要功能就是指明何时该触发任务的执行, 触发器包含一系列的定义信息,开发人员可根据实际情形自定义对应的触发器。

  • triggerKey 用于分组管理触发器
  • JobKey 指明该触发的Job信息
  • startTime Job触发的时间
  • endTime 定时Job结束的时间
  • description 触发器的描述信息
  • JobDataMap 触发器存储的外部参数信息
  • priority 触发器的优先级 。当有多个触发器Qty触发任务时,用于执行任务的工作线程数N小于Qty时,意味着Quartz没有足够的资源立即调度所有的任务,设置触发器的优先级可以帮助调度器按照优先级先后触发任务的执行

Trigger接口是Quartz框架中关于触发器的接口,可通过TriggerBuilder类来实例化Trigger的实例信息。Quartz框架中主要分为两类触发器Simple Triggers 和 Cron Triggers.

2 Simple Trigger 和 Cron Trigger

2.1 Simple Trigger

Simple Trigger的应用场景通常是在特定时间时刻执行一次,或者在特定时间点执行,然后按特定时间间隔重复。因此 Simple Trigger 通常包含开始时间和结束时间、重复计数和重复间隔属性。Simple Trigger 的实例通常使用TriggerBuilder 和SimpleScheduleBuilder 来创建。
Simple Trigger的使用实例代码如下

立即执行,间隔5秒钟执行一次

            //newTrigger()是由TriggerBuilder 提供的静态方法Trigger trigger = newTrigger().withIdentity("trigger1", "group1").startNow().withSchedule(simpleSchedule().withIntervalInSeconds(5).repeatForever()).build();

立即执行,间隔5分钟执行一次,截止时间为22:00

trigger = newTrigger().withIdentity("trigger2", "group1").withSchedule(simpleSchedule().withIntervalInMinutes(5).repeatForever()).endAt(dateOf(22, 0, 0)).build();

8点开始开始执行,间隔10秒钟执行一次,重复10次

 trigger = newTrigger().withIdentity("trigger3", "group1").startAt(dateOf(8, 0, 0))  .withSchedule(simpleSchedule().withIntervalInSeconds(10).withRepeatCount(10))          .build();

2.2 Cron Trigger

Cron Trigger相较于Simple Trigger而言,能够更加灵活的定义触发机制,比如每周一的早上九点

每天的8点至17点间隔两分钟执行一次。

 trigger = newTrigger().withIdentity("trigger4", "group1").withSchedule(cronSchedule("0 0/2 8-17 * * ?")).forJob("myJob", "group1").build();

每天10:42执行。

trigger = newTrigger().withIdentity("trigger5", "group1").withSchedule(dailyAtHourAndMinute(10, 42)).forJob(myJobKey).build();

关于cron表达式的学习,可以参考我的上一篇文章cron表达式

3 触发器的Misfire机制

如果持久性触发器由于调度程序被关闭或因为 Quartz 的线程池中没有可用于执行作业的线程而“错过”其触发时间,则会发生失火。不同的触发器类型有不同的失火指令可供使用。默认情况下,它们使用“智能策略”指令 - 该指令具有基于触发器类型和配置的动态行为。当计划程序启动时,它会搜索任何已触发错误的持久性触发器,然后根据其单独配置的错误触发指令更新每个触发器。

Simple Trigger的Misfire机制信息包含以下几种【常量】

MISFIRE_INSTRUCTION_IGNORE_MISFIRE_POLICY
MISFIRE_INSTRUCTION_FIRE_NOW
MISFIRE_INSTRUCTION_RESCHEDULE_NOW_WITH_EXISTING_REPEAT_COUNT
MISFIRE_INSTRUCTION_RESCHEDULE_NOW_WITH_REMAINING_REPEAT_COUNT
MISFIRE_INSTRUCTION_RESCHEDULE_NEXT_WITH_REMAINING_COUNT
MISFIRE_INSTRUCTION_RESCHEDULE_NEXT_WITH_EXISTING_COUNT

Cron Trigger 的Misfire机制信息包含以下几种【常量】

MISFIRE_INSTRUCTION_IGNORE_MISFIRE_POLICY

MISFIRE_INSTRUCTION_DO_NOTHING
MISFIRE_INSTRUCTION_FIRE_NOW

Quartz框架之触发器(3)相关推荐

  1. Quartz框架多个trigger任务执行出现漏执行的问题分析--转

    原文地址:http://blog.csdn.net/dailywater/article/details/51470779 一.问题描述  使用Quartz配置定时任务,配置了超过10个定时任务,这些 ...

  2. SpringBoot与quartz框架实现分布式定时任务

    前言 quartz的分布式调度策略是以数据库为边界资源的一种异步策略.各个调度器都遵守一个基于数据库锁的操作规则从而保证了操作的唯一性. 在quartz的集群解决方案里有张表scheduler_loc ...

  3. Quartz框架学习(1)—核心层次结构

    Quartz框架学习 Quartz(任务调度)框架的核心组件: job:任务.即任务调度行为中所要调度的对象. trigger:触发器.是什么促使了一个任务的调度?当然是时间.这也算事件驱动类型程序. ...

  4. Quartz框架应用(1)

    为什么80%的码农都做不了架构师?>>>    在你使用调度器之前,需要借助一些具体的例子去理解. 你可以使用SchedulerFactory类来达到程序调度的目的. 有一些Quar ...

  5. Quartz学习总结(1)——Spring集成Quartz框架

    一.Quartz简介 Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用.Quartz可以用来创建简 ...

  6. Quartz框架调用Demo

    Quartz框架调用Demo 任务调度在JAVA应用程序中运用的十分普遍,掌握QUARTZ是必备的技能; 官网:http://www.quartz-scheduler.org/ 下载最新1.80资源包 ...

  7. Quartz框架介绍

    一.Quartz概述: Quartz是一个完全由Java编写的开源任务调度的框架,通过触发器设置作业定时运行规则,控制作业的运行时间.其中quartz集群通过故障切换和负载平衡的功能,能给调度器带来高 ...

  8. Quartz框架实现定时任务介绍及简单使用

    https://blog.csdn.net/bicheng4769/article/details/81097305 Quartz框架介绍及简单使用 https://www.cnblogs.com/d ...

  9. spring整合quartz框架定时任务实战

    Spring整合定时任务调度框架Quartz实战 2014-09-12 11:51 9707人阅读 评论(6) 收藏 举报  分类: [综合问题](74)  版权声明:本文为博主原创文章,未经博主允许 ...

最新文章

  1. AttributeError: module ‘tensorflow‘ has no attribute ‘applications‘
  2. ie 6 对注释标记的一个不稳定的错误
  3. Spring Cloud Alibaba源码 - 21 Ribbon 源码解析
  4. 通过超链接访问后台方法_超有用的公众号超链接,3分钟学会2种超链接方法,特别实用!...
  5. DNS解析原理与Bind部署DNS服务
  6. 作者:王学志(1979-),男,中国科学院计算机网络信息中心副研究员
  7. NumPy进阶教程——超详细
  8. Java垃圾回收精粹 — Part4
  9. Windows 下Temp帐号处理
  10. java基础核心总结归纳---参考手册
  11. mac时钟屏保_【win/mac】抖音网红八卦时钟屏保动态壁纸,快来体验
  12. 奥克兰大学计算机工程硕士学制,2020年奥克兰大学数据科学硕士专业硕士申请条件-学费-世界排名...
  13. 群发邮件软件和邮件群发工具哪个好?如何群发邮件不进入垃圾箱
  14. Technorati Grabber:获得您的Technorati排名和权限
  15. Linux 网络编程——TCP编程
  16. 微信公众号 语音转文字api_原来微信不仅能实现语音转文字,还能实现文字转语音!你还不知吗...
  17. [Android]SQLite版本升级前后数据对比
  18. CAD设置图层透明显示
  19. (补充)微信长按识别二维码 -- 页面多个二维码如何识别?(二)
  20. 服务间歇性停顿问题优化|得物技术

热门文章

  1. 电信 802.1p 设置_手机SIM卡怎么设置密码
  2. 4点技巧教你如何正确管理多个微信群
  3. IBM人工智能新项目——寻找外星人
  4. android Bitmap 处理踩坑记
  5. CPU篇---理清“核“概念-01
  6. Spring Boot(9)之 Swagger 接口文档生成器
  7. HIGH-DIMENSIONAL CONTINUOUS CONTROL USING GENERALIZED ADVANTAGE ESTIMATION翻译
  8. guess在Java中用法_guess的用法总结大全
  9. 历年毕业设计情况总结
  10. 絮叨絮叨关于机房的点滴