Quartz Trigger Priority 触发器优先级

当多个触发器在一个相同的时间内触发,并且调度引擎中的资源有限的情况下,那么具有较高优先级的触发器先触发。

需要将配置文件中的org.quartz.threadPool.threadCount = 1设置为1,这样能更好的测试出效果。

  1. package com.gary.operation.jobdemo.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 java.util.Date;
  9.  
  10. import org.quartz.JobDetail;
  11. import org.quartz.Scheduler;
  12. import org.quartz.SchedulerFactory;
  13. import org.quartz.Trigger;
  14. import org.quartz.DateBuilder.IntervalUnit;
  15. import org.quartz.impl.StdSchedulerFactory;
  16. import org.slf4j.Logger;
  17. import org.slf4j.LoggerFactory;
  18.  
  19. public class PriorityExample {
  20.  
  21. public void run() throws Exception {
  22. Logger log = LoggerFactory.getLogger(PriorityExample.class);
  23.  
  24. // First we must get a reference to a scheduler
  25. SchedulerFactory sf = new StdSchedulerFactory();
  26. Scheduler sched = sf.getScheduler();
  27.  
  28. JobDetail job = newJob(TriggerEchoJob.class)
  29. .withIdentity("TriggerEchoJob")
  30. .build();
  31.  
  32. Date startTime = futureDate(5, IntervalUnit.SECOND);
  33.  
  34. Trigger trigger1 = newTrigger()
  35. .withIdentity("Priority7 Trigger5SecondRepeat")
  36. .startAt(startTime)
  37. .withSchedule(simpleSchedule().withRepeatCount(1).withIntervalInSeconds(5))
  38. .withPriority(7)
  39. .forJob(job)
  40. .build();
  41.  
  42. Trigger trigger2 = newTrigger()
  43. .withIdentity("Priority5 Trigger10SecondRepeat")
  44. .startAt(startTime)
  45. .withPriority(5)
  46. .withSchedule(simpleSchedule().withRepeatCount(1).withIntervalInSeconds(5))
  47. .forJob(job)
  48. .build();
  49.  
  50. Trigger trigger3 = newTrigger()
  51. .withIdentity("Priority10 Trigger15SecondRepeat")
  52. .startAt(startTime)
  53. .withSchedule(simpleSchedule().withRepeatCount(1).withIntervalInSeconds(5))
  54. .withPriority(10)
  55. .forJob(job)
  56. .build();
  57.  
  58. // Tell quartz to schedule the job using our trigger
  59. sched.scheduleJob(job, trigger1);
  60. sched.scheduleJob(trigger2);
  61. sched.scheduleJob(trigger3);
  62.  
  63. sched.start();
  64.  
  65. log.info("------- Waiting 30 seconds... -------------");
  66. try {
  67. Thread.sleep(30L * 1000L);
  68. // executing...
  69. } catch (Exception e) {
  70. }
  71.  
  72. sched.shutdown(true);
  73. }
  74.  
  75. public static void main(String[] args) throws Exception {
  76. PriorityExample example = new PriorityExample();
  77. example.run();
  78. }
  79. }

Quartz Trigger Priority 触发器优先级的更多相关文章

  1. quartz2.3.0(十四)trigger触发器优先级排序

    job任务类: package org.quartz.examples.example14; import org.slf4j.Logger; import org.slf4j.LoggerFacto ...

  2. 企业级任务调度框架Quartz(9) Quartz之作业触发器Trigger

    前序:      我们已经大概对Quartz的基本有了一个大概的认识:现在我们将要逐渐对Quartz的各个重要组件进行学习:前面已经对job进行了详细讲解,现在我们来认识下它的一个重要兄弟,没有它,作 ...

  3. spring读书笔记----Quartz Trigger JobStore出错解决

    将Quartz的JOBDetail,Trigger保持到数据库的时候发现,系统报错 The job (DEFAULT.jobDetail) referenced by the trigger does ...

  4. Quartz 多个触发器

    http://www.oschina.net/code/snippet_114990_4440 最近项目中要做个定时生成静态html文件东东,7点到19点每5分钟生成一次,其他时间1小时生成一次,刚开 ...

  5. SQL之trigger(触发器)

    先来看一小段程序 有如下三张表: 帐户(编号,姓名,余额,建立日期,储蓄所编号) 储蓄所(编号,名称,地址,人数,所属城市) 借贷(帐户,借贷类型,金额,日期) create trigger tri_ ...

  6. 删除trigger 禁用触发器 启用触发器 查看触发器

    删除trigger drop trigger 触发器名 on 在那个表上 禁用触发器 Alter Table 表名 disable trigger 触发器名 启用触发器 Alter Table 表名 ...

  7. sqlserver trigger(触发器)-更新某几列数据时触发【转】

    CREATE TRIGGER [dbo].[updataAlarmLevel]ON [dbo].[Alarm_Alarm_Info]AFTER INSERT, UPDATE – 在更新和插入之后ASB ...

  8. Zabbix trigger(触发器)设置

    设置一个监控项–进站包数,当进站包数>50触发器报警. 先设置一个进站包数的监控项(item):

  9. [源码分析] 定时任务调度框架 Quartz 之 故障切换

    [源码分析] 定时任务调度框架 Quartz 之 故障切换 目录 [源码分析] 定时任务调度框架 Quartz 之 故障切换 0x00 摘要 0x01 基础概念 1.1 分布式 1.1.1 功能方面 ...

随机推荐

  1. python IDE 集合

    python ruby等语言由于其小众和动态特性,缺少优良的IDE,本篇将介绍主要的python IDE. 1.python安装后自带有IDLE,简单方便,应该算是最简单的编辑环境了,但是过于简单,不 ...

  2. HTML5无刷新修改URL

    HTML5新添加了两个api分别是pushState和replaceState,DOM中的window对象通过window.history方法提供了对浏览器历史记录的读取,可以在用户的访问记录中前进和 ...

  3. 利用 T-sql 的从句 for xml path('') 实现多行合并到一行, 并带有分隔符

    T-sql 有一个for xml path('')的从句能把多行结果合并到一行,并成为xml 格式 比如有一张表tb有两列,其格式和数据为: id value—————1 aa1 bb2 aaa2 b ...

  4. Java 8 – Convert Instant to ZonedDateTime

    1. Instant -> ZonedDateTime Example to convert a Instant UTC+0 to a Japan ZonedDateTime UTC+9 Ins ...

  5. 启动和停止kafka 及kafka manager

    启动kafka: sh /app/pet_kafka_xxxx_cluster/bin/kafka-server-start.sh -daemon /app/pet_kafka_xxxx_cluste ...

  6. 近观ArcGIS 10.3.1

    ArcGIS 10.3.1公布了是有很多增强和改变.接下来我们重点内容一睹为快. 一.三维内容制作.公布及分享 ArcGIS 10.3.1能够实现三维内容制作.公布及分享.公布流程: 须要的软件环境 ...

  7. HDU 1431 素数回文

    有人问我这个问题. 个人感觉暴搜会TLE O(n*sqrt(n)).n=100000000:(推断素数用2~sqrt(n)+1 去除) 还是枚举好了. 枚举 1~10000,把他每一位存下来,回文数已 ...

  8. 浅析C#中的托付

    托付是寻址方法的.NET版本号.在C++中.函数指针仅仅只是是一个指向内存位置的指针,它不是类型安全的.而.NET托付全然不同,托付是安全类型的类,它定义了返回类型和參数的类型. 当把方法传递给其它方 ...

  9. android studio : clang++.exe: error: invalid linker name in argument '-fuse-ld=bfd

    公司jenkins上的C++编译器最近换成了clang,今天更新了代码发现本地的C/C++代码用NDK编译不过了,提示: “clang++.exe: error: invalid linker nam ...

  10. (原创)发布一个c++11开发的轻量级的并行Task库TaskCpp

    TaskCpp简介 TaskCpp是c++11开发的一个跨平台的并行task库,它的设计思路来源于微软的并行计算库ppl和intel的并行计算库tbb,关于ppl和tbb我在前面有介绍.既然已经有了这 ...