Quartz(2-Trigger)

相关文章链接

  1. 定时任务工具类(Cron Util)
  2. SpringBoot Task
  3. Quartz(1-Job)
  4. Quartz(2-Trigger)

Trigger

方法

  1. 优先级(priority)

如果你的 trigger 很多(或者 Quartz 线程池的工作线程太少),Quartz 可能没有足够的资源同时触发所有的 trigger;这种情况下,你可能希望控制哪些 trigger 优先使用 Quartz 的工作线程,要达到该目的,可以在 trigger 上设置 priority 属性。

比如,你有 N 个 trigger 需要同时触发,但只有 Z 个工作线程,优先级最高的 Z 个 trigger 会被首先触发

  1. 错过触发(misfire instructions)

如果 scheduler 关闭了,或者 Quartz 线程池中没有可用的线程来执行 job,此时持久性的 trigger 就会错过(miss)其触发时间,即错过触发(misfire)。当下次调度器启动或者有可以线程时,会检查处于 misfire 状态的 Trigger。而 misfire 的状态值决定了调度器如何处理这个 Trigger。

不同类型的 trigger,有不同的 misfire 机制。它们默认都使用“智能机制(smart policy)”,即根据 trigger 的类型和配置动态调整行为

分类

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

SimpleTrigger

为需要在特定的日期/时间启动,且以一个可能的间隔时间重复执行 n 次的 job 所设计的

  1. startNow():Scheduler 开始执行时,触发器也即执行
  2. startAt():在指定的时间开始执行
  3. endAt():结束时间

执行间隔:

  1. withInterval(TimeSpan timeSpan):通用的间隔执行方法
  2. withIntervalInHours(int hours):以小时为间隔单位进行执行
  3. withIntervalInMinutes(int minutes):以分钟为间隔单位进行执行
  4. withIntervalInSeconds(int seconds):以秒为间隔单位进行执行

执行时间:

  1. withRepeatCount(int repeatCount):执行多少次以后结束
  2. repeatForever():永远执行
  3. repeatMinutelyForever():一分钟执行一次(永远执行)
  4. repeatMinutelyForever(int minutes):每隔几分钟执行一次(永远执行)
  5. repeatMinutelyForTotalCount(int count, int minutes):每隔几分钟执行一次(执行次数为 count)类似的还有秒、小时。
public class Trigger1 {
   

    public static void main(String[] args) throws SchedulerException {
   
        //创建一个 JobDetail 的实例,将该实例与 HelloJob 绑定
        JobDetail jobDetail = JobBuilder.newJob(HelloJob.class)
                .withIdentity("testJob")
                .build();
        //开始时间 3 秒钟之后 (具体时间按实际业务编写)
        Date sData = new Date();
        sData.setTime(sData.getTime() + 3000);
        //结束时间 20 秒钟之后 (具体时间按实际业务编写)
        Date eData = new Date();
        eData.setTime(eData.getTime() + 20000);
        //创建一个 Trigger 实例,定义该 job3 秒之后执行,在 6 秒之后结束
        SimpleTrigger zhlTrigger = TriggerBuilder.newTrigger()
                    .withIdentity("test")
                    .startAt(sData) //设定开始时间
                    .endAt(eData)   //设定结束时间
                    .withSchedule(SimpleScheduleBuilder
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值