项目地址:

https://github.com/yuleiqq/quartz_example/tree/master/quartz_study

目录

Trigger 的共同属性

Priority(优先级)

失败的指令

Calendars(日历)


与作业一样,触发器也很容易使用,但是在充分利用Quartz之前,您需要了解和理解触发器中包含的各种可定制选项。另外,如前所述,您可以选择不同类型的触发器来满足不同的调度需求。

Trigger 的共同属性

除了所有触发器类型都具有用于跟踪其身份的TriggerKey属性之外,还有许多其他属性对于所有触发器类型都是通用的。这些公共属性是在构建触发器定义时使用TriggerBuilder设置的(下面将给出相关示例)。

以下是所有触发器类型的通用属性列表:

  • “jobKey” 属性表示触发器触发时应该执行的作业的标识。
  • “startTime”属性指示触发器的调度何时开始生效。该值是java.util。日期对象,定义给定日历日期上的某个时间点。对于某些触发器类型,触发器实际上会在启动时触发,而对于其他触发器,它只是标记应该开始遵循计划的时间。这意味着您可以存储一个触发器,并在一月期间使用一个时间表,例如“每个月的第5天”,如果startTime属性设置为4月1日,则在第一次触发之前的几个月。
  • “endTime”属性指示触发器的计划何时不再有效。换句话说,如果一个触发器的日程表是“每个月的第5天”,并在7月1日结束,那么它将在6月5日最后一次触发。

其他需要更多解释的属性将在下面的小节中讨论。

Priority(优先级)

有时候,当您有很多触发器(或者在Quartz线程池中只有很少的工作线程)时,Quartz可能没有足够的资源立即触发所有计划在同一时间触发的触发器。在这种情况下,您可能希望控制哪个触发器在可用的Quartz工作线程上第一次出现故障。为此,可以在触发器上设置优先级属性。如果N个触发器同时触发,但是当前只有Z个工作线程可用,那么优先级最高的第一个Z触发器将首先执行。如果您没有在触发器上设置优先级,那么它将使用默认的优先级5。任何整数值都允许优先级为正或负。

注意:只有当触发器具有相同的触发时间时,才会比较优先级。预定于10:59发射的触发器总是在预定于11:00发射的触发器之前发射。

注意:当一个触发器的作业被检测到需要恢复时,它的恢复计划与原始触发器具有相同的优先级。

失败的指令

触发器的另一个重要属性是“misfire instruction”。如果持久性触发器因为关闭调度程序或因为Quartz的线程池中没有可用的线程来执行作业而“错过”其触发时间,则会发生误触发。不同的触发类型有不同的失败指令。默认情况下,它们使用“智能策略”指令,该指令具有基于触发器类型和配置的动态行为。当调度器启动时,它将搜索任何已失败触发的持久触发器,然后根据它们各自配置的失败指令更新它们。当您开始在自己的项目中使用Quartz时,您应该熟悉在给定触发器类型上定义的misfire指令,并在它们的JavaDoc中进行了解释。更多关于失火指令的具体信息将在特定于每种触发类型的教程课程中给出。

Calendars(日历)

Quartz日历对象(不是java.util。在定义触发器并将其存储在调度器中时,可以将其与触发器关联。日历用于从触发器的触发计划中排除时间块。例如,您可以创建一个触发器,在每个工作日的上午9:30触发一个作业,然后添加一个排除所有业务假期的日历。

日历可以是任何实现日历接口的序列化对象,它看起来像这样:

Calendars 接口

package org.quartz;public interface Calendar {public boolean isTimeIncluded(long timeStamp);public long getNextIncludedTime(long timeStamp);}

注意,这些方法的参数都是long类型的。您可以猜到,它们是毫秒格式的时间戳。这意味着日历可以“阻挡”一毫秒的时间。最有可能的是,你会对一整天的“封锁”感兴趣。为了方便起见,Quartz包含了 org.quartz.impl.HolidayCalendar 。

Calendar Example

HolidayCalendar cal = new HolidayCalendar();
cal.addExcludedDate( someDate );
cal.addExcludedDate( someOtherDate );sched.addCalendar("myHolidays", cal, false);Trigger t = newTrigger().withIdentity("myTrigger").forJob("myJob").withSchedule(dailyAtHourAndMinute(9, 30)) // execute job daily at 9:30.modifiedByCalendar("myHolidays") // but not on holidays.build();// .. schedule job with triggerTrigger t2 = newTrigger().withIdentity("myTrigger2").forJob("myJob2").withSchedule(dailyAtHourAndMinute(11, 30)) // execute job daily at 11:30.modifiedByCalendar("myHolidays") // but not on holidays.build();// .. schedule job with trigger2

触发器的构造/构建的细节将在接下来的两节课中给出。现在,只需相信上面的代码创建了两个触发器,每个触发器都计划每天触发。但是,在日历排除期间发生的解雇将被跳过。

看到org.quartz.impl.calendar 包,用于许多可能适合您需要的日历实现。

关于Trigger的介绍相关推荐

  1. Flink中Trigger的介绍及使用

    Flink中Trigger的介绍及使用 Flink中的Trigger用来确认一个窗口是否应该出发结果的计算,每个windowAssigner都有一个默认的Trigger,先来看看Trigger的定义及 ...

  2. Oracle触发器(trigger):一般用法

    trigger和procedure,function类似,只不过它不能被显示调用,只能被某个事件触发然后Oracle自动去调用.常用的一般是针对一个表或视图创建一个trigger,然后对表或视图做某些 ...

  3. web自动化之trigger()常用鼠标操作事件

    转载自品略图书馆 http://www.pinlue.com/article/2020/06/1614/5610751058447.html 前言 在web页面上经常遇到的鼠标事件有:鼠标悬停操作,鼠 ...

  4. 【原创】Quartz代码详解

    阅读目录 简单介绍 章节1:Quartz简单实例 章节2:Job.JobDetail.JobBuilder 章节3:Trigger.TriggerBuilder 章节4:Scheduler 章节5:J ...

  5. quarts集群 运维_Quartz.Net分布式运用

    Quartz.Net的集群部署详解 标签(空格分隔): Quartz.Net Job 最近工作上要用Job,公司的job有些不满足个人的使用,于是就想自己搞一个Job站练练手,网上看了一下,发现Qua ...

  6. Quartz任务调度——快速入门

    目录 一.Quartz概念 二.Quartz运行环境 三.Quartz设计模式 四.Quartz学习的核心概念 五.Qutarz的体系结构 六.Quartz的几个常用API 七.Quartz的使用 八 ...

  7. oracle--14触发器1

    trigger和procedure,function类似,只不过它不能被显示调用,只能被某个事件触发然后oracle自动去调用.常用的一般是针对一个表或视图创建一个trigger,然后对表或视图做某些 ...

  8. 云原生CI/CD:Tekton之trigger介绍

    云原生CI/CD:Tekton之trigger组件 简介 上面背景图片用了一张手枪扳机的图片,啥意思呢?trigger对于pipeline的作用就像扳机对于手枪的作用的,读完文章再来体会这句话. 前面 ...

  9. Oracle 触发器trigger介绍

    一.触发器定义 Oracle触发器是使用者对Oracle数据库的对象做特定的操作时,触发的一段PL/SQL程序代码器.触发的事件包括对表的DML操作,用户的DDL操作以及数据库事件等. 二.触发器分类 ...

最新文章

  1. 非线程安全类ArrayList出现异常:java.util.ConcurrentModificationException
  2. ADAS实际已涵盖20多种功能
  3. Java 获取文件路径
  4. python学习点滴记录-Day09
  5. 微信小程序开发的快速步骤方法和最大的坑
  6. web 项目集成福昕_项目学生:Web服务集成
  7. PHP通过OpenSSL生成证书、密钥并且加密解密数据,以及公钥,私钥和数字签名的理解...
  8. shell expect的简单实用
  9. (09)System Verilog 队列示例
  10. spark学习-28-Spark数据倾斜问题
  11. Java基础语法之方法的参数传递与综合案例
  12. 全国院线总票房破 50 亿!影院复工后,哪些电影最受欢迎?
  13. 金三银四大厂面经总结,淘汰了80%的Java面试者
  14. ISA Server 2004 SP2新特性(上)
  15. SQL SERVER 备份数据库到指定路径语句
  16. Android Studio 导入项目时容易出现的问题汇总
  17. Android内核剖析pdf
  18. 免费好用的OCR文字识别软件推荐
  19. Python输入若干整数求和
  20. android 电视安装apk文件损坏,智能电视无法安装APK文件?原因都在这里!

热门文章

  1. Java可以运行javac不能运行
  2. 怎么将类似\u6570\u636e\u5e93的东西转化为汉字
  3. 入门级蛋白磷酸化研究
  4. 注册谷歌广告联盟提示“此电话号码无法用于进行验证”解决办法
  5. Deepin20固定无线网卡多个IP地址
  6. 深度学习方法(二十一):常用权重初始化方法Xavier,He initialization的推导
  7. 设置vlan虚拟局域网
  8. 计算机 开机硬盘灯一直亮,电脑一开机硬盘灯就一直亮
  9. echarts中国地图边缘设置阴影投影效果,并添加散点,大小根据数值改变
  10. windows server 2003安装组件提示插入cd