job任务类:

  1. package org.quartz.examples.example14;
  2.  
  3. import org.slf4j.Logger;
  4. import org.slf4j.LoggerFactory;
  5. import org.quartz.Job;
  6. import org.quartz.JobExecutionContext;
  7. import org.quartz.JobExecutionException;
  8.  
  9. /**
  10. * 一个简单的job任务
  11. */
  12. public class TriggerEchoJob implements Job {
  13.  
  14. private static final Logger LOG = LoggerFactory.getLogger(TriggerEchoJob.class);
  15.  
  16. // 必须要有public修饰的无参构造函数
  17. public TriggerEchoJob() {
  18. }
  19.  
  20. // 任务执行方法
  21. public void execute(JobExecutionContext context) throws JobExecutionException {
  22. LOG.info("任务执行。TRIGGER: " + context.getTrigger().getKey());
  23. }
  24.  
  25. }

调度器类:

  1. package org.quartz.examples.example14;
  2.  
  3. import static org.quartz.DateBuilder.futureDate;
  4. import static org.quartz.JobBuilder.newJob;
  5. import static org.quartz.SimpleScheduleBuilder.simpleSchedule;
  6. import static org.quartz.TriggerBuilder.newTrigger;
  7.  
  8. import org.quartz.DateBuilder.IntervalUnit;
  9. import org.quartz.JobDetail;
  10. import org.quartz.Scheduler;
  11. import org.quartz.SchedulerFactory;
  12. import org.quartz.Trigger;
  13. import org.quartz.impl.StdSchedulerFactory;
  14. import org.slf4j.Logger;
  15. import org.slf4j.LoggerFactory;
  16.  
  17. import java.util.Date;
  18.  
  19. /**
  20. * 这个例子将演示触发器是如何按优先级排序的。
  21. */
  22. public class PriorityExample {
  23. Logger LOG = LoggerFactory.getLogger(PriorityExample.class);
  24.  
  25. public void run() throws Exception {
  26.  
  27. // 初始化调度器
  28. // SchedulerFactory sf = new StdSchedulerFactory("org/quartz/examples/example14/quartz_priority.properties");
  29. SchedulerFactory sf = new StdSchedulerFactory();
  30. Scheduler sched = sf.getScheduler();
  31.  
  32. JobDetail job = newJob(TriggerEchoJob.class).withIdentity("TriggerEchoJob").build();
  33.  
  34. // 这三个触发器将同时触发它们的第一次,按优先级排序,优先级数字越大,优先级越高。
  35. // 然后重复执行一次,因为间隔时间秒数不一样,所以触发器又会显示好像不按优先级顺序触发了,其实并没有忽略优先级。
  36.  
  37. // 由于设置了触发器优先级,所以我们应该可以看到以下触发器执行顺序:
  38. // 1. Priority10Trigger15SecondRepeat
  39. // 2. Priority5Trigger10SecondRepeat
  40. // 3. Priority1Trigger5SecondRepeat
  41. // 4. Priority1Trigger5SecondRepeat
  42. // 5. Priority5Trigger10SecondRepeat
  43. // 6. Priority10Trigger15SecondRepeat
  44.  
  45. // Calculate the start time of all triggers as 5 seconds from now
  46. Date startTime = futureDate(5, IntervalUnit.SECOND);
  47.  
  48. // 第一个触发器优先级1(withPriority),优先级数字越小触发器优先级越低
  49. Trigger trigger1 = newTrigger().withIdentity("Priority1Trigger5SecondRepeat").startAt(startTime)
  50. .withSchedule(simpleSchedule().withRepeatCount(1).withIntervalInSeconds(5)).withPriority(1).forJob(job)
  51. .build();
  52.  
  53. // 第二个触发器优先级未设置,默认优先执行设置了优先级的触发器,所以这个触发器优先级最低
  54. Trigger trigger2 = newTrigger().withIdentity("Priority5Trigger10SecondRepeat").startAt(startTime)
  55. .withSchedule(simpleSchedule().withRepeatCount(1).withIntervalInSeconds(10)).forJob(job).build();
  56.  
  57. // 触发器优先级10(withPriority),优先级数字越大触发器优先级越高,在触发器并发执行情况下,优先级越高的触发器执行越靠前
  58. Trigger trigger3 = newTrigger().withIdentity("Priority10Trigger15SecondRepeat").startAt(startTime)
  59. .withSchedule(simpleSchedule().withRepeatCount(1).withIntervalInSeconds(15)).withPriority(10)
  60. .forJob(job).build();
  61.  
  62. sched.scheduleJob(job, trigger1);
  63. sched.scheduleJob(trigger2);
  64. sched.scheduleJob(trigger3);
  65.  
  66. //启动调度器,只有启动调度器,触发器和任务才会真正执行
  67. sched.start();
  68. LOG.info("------- Started Scheduler -----------------");
  69. Thread.sleep(30L * 1000L);
  70. //关闭调度器
  71. sched.shutdown(true);
  72. LOG.info("------- Shutdown Complete -----------------");
  73. }
  74.  
  75. public static void main(String[] args) throws Exception {
  76. PriorityExample example = new PriorityExample();
  77. example.run();
  78. }
  79. }

quartz2.3.0(十四)trigger触发器优先级排序的更多相关文章

  1. quartz2.3.0(二)触发器Trigger花式Scheduler调度job

    任务类 package org.quartz.examples.example2; import java.util.Date; import org.slf4j.Logger; import org ...

  2. quartz2.3.0(四)JobDataMap—带状态集合的定时器内置集合

    任务类 package org.quartz.examples.example4; import java.util.Date; import org.quartz.DisallowConcurren ...

  3. quartz2.3.0系列目录——带您由浅入深全面掌握quartz2.3.0

    quartz2.3.0系列目录 官网下载地址:http://www.quartz-scheduler.org/downloads/ 本系列demo全部来源于官网,仅仅是简化和汉化了注释!一部分代码de ...

  4. quartz2.3.0(十三)数据库持久化定时器job任务和trigger触发器,在多个调度器实例情况下,由其它调度器实例恢复执行调度器宕机的job任务

    一.初始化数据库11张quartz表:qrtz_*   先从官网下载好quartz2.3.0包:http://www.quartz-scheduler.org/downloads/ 解压后进入目录:q ...

  5. quartz2.3.0(十五)执行、暂停、继续执行、清除,花式操作数据库中持久化的job任务

    #################################################################################################### ...

  6. quartz2.3.0(十)xml配置方式定义quartz定时任务

    1.新增pom依赖 除了按照<quartz2.3.0系列目录——带您由浅入深全面掌握quartz2.3.0>添加依赖之外,pom.xml里新增加依赖: <dependency> ...

  7. ASP.NET SignalR 与 LayIM2.0 配合轻松实现Web聊天室(十四)之漏掉的客服消息

    前言 不知不觉已经十四篇了,其实已经没有什么可写了.但是突然发现layim中带的客服功能没有用到.于是乎,抽点时间完成吧.其实之前的工作已经把客服功能完成了一大半,剩下的我们稍微调整即可.今天的演示我 ...

  8. 从壹开始前后端分离 [ Vue2.0+.NET Core2.1] 十四 ║ VUE 计划书 & 我的前后端开发简史

    ---新内容开始--- 番外 大家周一好呀,又是元气满满的一个周一呀!感谢大家在周一这个着急改Bug的黄金时期,抽出时间来看我的博文哈哈哈,时间真快,已经到第十四篇博文了,也很顺顺(跌跌)利利 (撞撞 ...

  9. Quartz Trigger Priority 触发器优先级

    Quartz Trigger Priority 触发器优先级 当多个触发器在一个相同的时间内触发,并且调度引擎中的资源有限的情况下,那么具有较高优先级的触发器先触发. 需要将配置文件中的org.qua ...

随机推荐

  1. nginx配置ssl加密(单/双向认证、部分https)

    nginx下配置ssl本来是很简单的,无论是去认证中心买SSL安全证书还是自签署证书,但最近公司OA的一个需求,得以有个机会实际折腾一番.一开始采用的是全站加密,所有访问http:80的请求强制转换( ...

  2. 安利一个github上面的一个神级库thefuck,Linux命令敲错了,没关系,自动纠正你的命令

    没错就是这么神奇,名字相当噶性,thefuck.当你命令输入错误不要怕,直接来一句fuck,自动纠正你输入的命令. 在你输入错误的命令的时候,忍俊不禁的想来一句fuck,没错你不仅可以嘴上说,命令里面 ...

  3. 服务器收不到支付宝notify_url异步回调请求的问题排查

    小背景 最近在调整支付宝支付的功能时发现,不能够正常接收支付宝付款成功之后的回调通知了,从代码到配置最后到服务器配置都排查了一遍,最终发现问题原因竟然是因为我们的回调地址notify_url是http ...

  4. CodeMirror在线代码编辑器使用

    CodeMirror官网地址为:https://codemirror.net/ CodeMirror作为一款代码编辑器,其应用场景主要是在线网站写代码.如现在的leetcode.洛谷.code-vs等 ...

  5. idea的maven工程中修改pom会改变项目jdk版本

    解决办法 方案一 //pom中配置maven插件时候 <plugins> <!--jdk编译插件--> <plugin> <groupId>org.ap ...

  6. 第07组 Beta冲刺(5/5)

    队名:摇光 队长:杨明哲 组长博客:求戳 作业博客:求再戳 队长:杨明哲 过去两天完成了哪些任务 文字/口头描述:暂时没有. 展示GitHub当日代码/文档签入记录:(组内共用,已询问过助教小姐姐) ...

  7. 范仁义html+css课程---6、表格

    范仁义html+css课程---6.表格 一.总结 一句话总结: 表格中最常用的元素就是table.tr.td.th,还有语义化的thead.tbody.tfoot标签 1.表格构成三个基本要素? t ...

  8. 隐藏一个button的方法(2种) 写出一个button的按钮(2种)

    display:none;visibility:hidden: <input type = button><button>这是一个按钮 </button>

  9. CMU Database Systems - Distributed OLTP & OLAP

    OLTP scale-up和scale-out scale-up会有上限,无法不断up,而且相对而言,up升级会比较麻烦,所以大数据,云计算需要scale-out scale-out,就是分布式数据库 ...

  10. CMU Database Systems - MVCC

    MVCC是一种用空间来换取更高的并发度的技术 对同一个对象不去update,而且记录下每一次的不同版本的值 存在不会消失,新值并不能抹杀原先的存在 所以update操作并不是对世界的真实反映,这是一种 ...