Quartz Trigger Priority 触发器优先级

Quartz Trigger Priority 触发器优先级

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

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

package com.gary.operation.jobdemo.example14;

import static org.quartz.DateBuilder.futureDate;
import static org.quartz.JobBuilder.newJob;
import static org.quartz.SimpleScheduleBuilder.simpleSchedule;
import static org.quartz.TriggerBuilder.newTrigger;

import java.util.Date;

import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerFactory;
import org.quartz.Trigger;
import org.quartz.DateBuilder.IntervalUnit;
import org.quartz.impl.StdSchedulerFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class PriorityExample {

    public void run() throws Exception {
        Logger log = LoggerFactory.getLogger(PriorityExample.class);

        // First we must get a reference to a scheduler
        SchedulerFactory sf = new StdSchedulerFactory();
        Scheduler sched = sf.getScheduler();

        JobDetail job = newJob(TriggerEchoJob.class)
            .withIdentity("TriggerEchoJob")
            .build();

        Date startTime = futureDate(5, IntervalUnit.SECOND);

        Trigger trigger1 = newTrigger()
            .withIdentity("Priority7 Trigger5SecondRepeat")
            .startAt(startTime)
            .withSchedule(simpleSchedule().withRepeatCount(1).withIntervalInSeconds(5))
            .withPriority(7)
            .forJob(job)
            .build();

        Trigger trigger2 = newTrigger()
            .withIdentity("Priority5 Trigger10SecondRepeat")
            .startAt(startTime)
            .withPriority(5)
            .withSchedule(simpleSchedule().withRepeatCount(1).withIntervalInSeconds(5))
            .forJob(job)
            .build();

        Trigger trigger3 = newTrigger()
            .withIdentity("Priority10 Trigger15SecondRepeat")
            .startAt(startTime)
            .withSchedule(simpleSchedule().withRepeatCount(1).withIntervalInSeconds(5))
            .withPriority(10)
            .forJob(job)
            .build();

        // Tell quartz to schedule the job using our trigger
        sched.scheduleJob(job, trigger1);
        sched.scheduleJob(trigger2);
        sched.scheduleJob(trigger3);

        sched.start();

        log.info("------- Waiting 30 seconds... -------------");
        try {
            Thread.sleep(30L * 1000L);
            // executing...
        } catch (Exception e) {
        }

        sched.shutdown(true);
    }

    public static void main(String[] args) throws Exception {
        PriorityExample example = new PriorityExample();
        example.run();
    }
}

Quartz Trigger Priority 触发器优先级

时间: 2024-08-08 02:55:15

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

schmitt trigger 施密特触发器 【数字电路】

schmitt trigger Hey guys, Just think about this situation! 对于一个理想运放,信号从正极输入的时候,如果信号大于0,超过了线性区域,输出的Vout是Vmax,同理输入小于线性输出Vmin,那么输出将是Vmin. 如果输入信号有时候会和0,"暧昧一下",在受噪声的干扰情况下,会短暂和0V交越. 输出此时就会发生很短暂的跳跃,这种跳跃是不好的,这使得Op对于0V电压太过于敏感,如下图中最下面的红色输入信号.实际中我们往往会留取一定的

PQ(Priority queuing优先级队列)

                    PQ(Priority queuing优先级队列)                                       一种很传统,但不能不谈的队列 PQ是一种具备严格的,分等级执行调度的队列,它可以最多创建4个不同等级的队列,分别是高.中.普通.低:然后根据对不同的数据流量分类,将不同的分类数据送入到4个不同等级的队列.如图X所示,然后以100%的使用带宽的方式,首先服务于处于"高"队列中的数据,直到"高"队列中的数

SQL之trigger(触发器)

先来看一小段程序 有如下三张表: 帐户(编号,姓名,余额,建立日期,储蓄所编号) 储蓄所(编号,名称,地址,人数,所属城市) 借贷(帐户,借贷类型,金额,日期) 1 create trigger tri_bank_delete 2 on bank for delete as 3 declare @count_account_of_bank int 4 select @count_account_of_bank=COUNT(*) 5 from account 6 where bank_ID=(se

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

将Quartz的JOBDetail,Trigger保持到数据库的时候发现,系统报错 The job (DEFAULT.jobDetail) referenced by the trigger does not exist经过测试发现,在不使用hibernate的时候只有spring的测试环境情况下一切正常.而放到工作环境的时候就发生错误. 因此怀疑是datasource的问题.查spring Quartz论坛上发现果然是这个问题.将quartz的datasource分开独立就全部解决了.其实也可

Quartz 多个触发器

http://www.oschina.net/code/snippet_114990_4440 最近项目中要做个定时生成静态html文件东东,7点到19点每5分钟生成一次,其他时间1小时生成一次,刚开始就走错了 居然想用一条cron表达式搞定,搞了半天,问了好多人,得到一个好的办法,就是给以个job创建多个触发器,不扯了,看代码.. 创建job并给job添加多个触发器 package com.f139.frame.job; import static org.quartz.JobBuilder.

Quartz(自动任务)中的触发器Trigger

1.Quartz中的触发器TriggerJob 包含了要执行任务的逻辑,但是 Job 对何时该执行却一无所知.这个事情留给了 Trigger.Quartz Trigger 继承了抽象的 org.quartz.Trigger 类.当前,Quartz 有三个可用的 Trigger: Java代码 ·org.quartz.SimpleTrigger ·org.quartz.CronTrigger ·org.quartz.NthIncludeDayTrigger 2.SimpleTrigger的介绍正如

Quartz教程四:Trigger

原文链接 | 译文链接 | 翻译:nkcoder 本系列教程由quartz-2.2.x官方文档翻译.整理而来,希望给同样对quartz感兴趣的朋友一些参考和帮助,有任何不当或错误之处,欢迎指正:有兴趣研究源码的同学,可以参考我对quartz-core源码的注释(进行中). 与job一样,trigger也很容易使用,但是还有一些扩展选项需要理解,以便更好地使用quartz.trigger也有很多类型,可以根据实际需要来选择. 最常用的两种trigger会分别在教程五:SimpleTrigger和教

【Quartz】深入Job、JobDetail、JobDataMap、Trigger

林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka Quartz API核心接口有: Scheduler – 与scheduler交互的主要API: Job – 你通过scheduler执行任务,你的任务类需要实现的接口: JobDetail – 定义Job的实例: Trigger – 触发Job的执行: JobBuilder – 定义和创建JobDetail实例的接口; TriggerBuilder – 定义和创建Trigger实例的接口:

Trigger 触发器

本文非原创 一.触发器: 是一种特殊的存储过程,其特殊性在于它并不需要用户来执行. 调用,在表中数据进行修改时,自动执行,来实现复杂的完整性约束, 防止对数据不正确的修改. 1.定义:它是一段能够自动执行的程序,当对象进行 update,insert, delete 时,自动执行,它没有参数,不允许被调用. 2.触发器的优点: (1)级联修改 (2)实现复杂约束 (3)检查数据 (4)控制修改表时合乎业务规则 二.触发器的激活时机: 1.后触发:当引起触发器执行的修改语句执行完成,并通过约束后才