配置定时任务参数
quartz.properties文件时
需要配置jobStore的超过时间数
默认为60秒(这里单位为毫秒)
org.quartz.jobStore.misfireThreshold = 60000
这个参数一般在多线程池条件下无效。
 
产生misfire失败的条件:
单线程执行定时任务
第一个任务的执行完后的结束时间 减去 第二个任务的开始时间 = 时间间隔
时间间隔 大于 60s时, 第二个任务不会被执行。
这个叫做失败临界值,或者临界时间
 
例如
设置quartz.properties
org.quartz.threadPool.class: org.quartz.simpl.SimpleThreadPool
org.quartz.threadPool.threadCount:
org.quartz.threadPool.threadPriority:
设置临界时间为6秒
org.quartz.jobStore.misfireThreshold:
 
设置任务每个5秒执行一次job.properties
job.xxx.class=com.uelink.dkapi.job.RemindJob
job.xxx.group=default
job.xxx.id=
job.xxx.cron=*/ * * * * ?
job.xxx.enable=true
注意:xxx表示名字随意取
 
在定时任务中编写延迟RemindJob.java
休眠10秒,相当于任务执行时间为10s
public class RemindJob implements Job{

      @Override
public void execute(JobExecutionContext context) throws JobExecutionException {
System.out.println("微信小程序定时提醒通知开始");
DateFormat df = new SimpleDateFormat("hh:mm:ss");
System.err.println("[" + Thread.currentThread().getName() + "] Now: "
+ df.format(context.getFireTime()) + " Scheduled: "
+ df.format(context.getScheduledFireTime()) + " Previous: "
+ df.format(context.getPreviousFireTime()) + " Next: "
+ df.format(context.getNextFireTime()));
try {
Thread.sleep( * ); } catch (InterruptedException e) {
e.printStackTrace();
}
System.err.println("线程休眠结束时间:"+df.format(new Date(System.currentTimeMillis())));
} }
 
产生错失情况
条件
org.quartz.jobStore.misfireThreshold时间6秒
每隔5秒执行一次,
一次执行10秒
 
结果为
Now: :: Scheduled: :: Previous: :: Next: ::

Now: :: Scheduled: :: Previous: :: Next: ::

Now: :: Scheduled: :: Previous: :: Next: ::

Now: :: Scheduled: :: Previous: :: Next: ::

Now: :: Scheduled: :: Previous: :: Next: ::
查看上面的Scheduled,是定时任务原本执行的时间。
第一个22:20, 第二个22:25, 第三个22:30, 第四个22:35,第五个22:40,第六个22:45,第七个22:50
第二个
30-25=5<6,认为没有产生错失。执行第二个
第三个25到40
40-30>6 ,产生错失,不执行第三个。
第四个原本是35,不知道是不是因为第三个发生错失后,小于40的任务都不执行,第四个被略过。
22:40直接执行第五个
 
第六个
40-45=5<6 ,没有措施,执行第六个
第七个22:50,
23:00-22:50=10>6产生错失,第六个不执行,第七个22:55不执行
第八个执行
 
 
当我们设置临界时间为60秒时。
条件
org.quartz.jobStore.misfireThreshold时间60秒
每隔5秒执行一次,
一次执行10秒
 
结果
Now: :: Scheduled: :: Previous: :: Next: ::

Now: :: Scheduled: :: Previous: :: Next: ::

Now: :: Scheduled: :: Previous: :: Next: ::

Now: :: Scheduled: :: Previous: :: Next: ::

Now: :: Scheduled: :: Previous: :: Next: ::
所有的定时任务都会被执行,知道超出临界时间为止
第一次任务原本开始时间和任务真正开始时间差为0
第二次5
第三次10
第四次15
需要在13次才能达到60,才会产生错失情况。
 
 
如果我们每隔一天才执行一次时,由于任务执行时间远远小于两次任务的时间间隔,不会产生错失情况,不需要担心定时任务没有执行的意外。只需要设置这个临界时间为60秒即可。
而且一般情况下都是多线程执行定时任务,不会因为定时任务阻塞产生错失策略。不需要关心这个参数设置
 

quartz配置参数org.quartz.jobStore.misfireThreshold含义解释的更多相关文章

  1. Quartz配置

    1. Quartz主要配置 属性名称 是否必选 类型 默认值 说明 org.quartz.scheduler.instanceName 否 String QuartzScheduler Schedul ...

  2. Spring整合quartz2.2.3总结,quartz动态定时任务,Quartz定时任务集群配置

    Spring整合quartz2.2.3总结,quartz动态定时任务,Quartz定时任务集群配置 >>>>>>>>>>>>&g ...

  3. spring通过配置xml文件集成quartz定时器

    概述 Spring为创建Quartzde Scheduler.Trigger和JobDetail提供了方便的FactoryBean类,以便能够在Spring容器中享受注入的好处. 此外,Spring还 ...

  4. spring quartz 配置多个定时任务

    1.配置文件-quartz-1.7.3jar   spring版本为3.1.3jar <?xml version="1.0" encoding="UTF-8&quo ...

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

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

  6. Spring-----定时任务Quartz配置

    第一种,作业类继承自特定的基类:org.springframework.scheduling.quartz.QuartzJobBean. 第一步:定义作业类 import org.quartz.Job ...

  7. Quartz.NET总结(三)Quartz 配置

    前两篇文章,已经介绍了Quartz.NET的使用和Cron表达式表达式的写法,今天说一说Quartz的配置,Quartz相关的配置有三个quartz.config.quartz_jobs.xml.lo ...

  8. spring多个定时任务quartz配置

    spring多个定时任务quartz配置 <?xml version=”1.0″ encoding=”UTF-8″?> <beans xmlns=”http://www.spring ...

  9. Quartz 配置文件属性

    主要配置 Property Name Req'd Type Default Value org.quartz.scheduler.instanceName no string 'QuartzSched ...

随机推荐

  1. 网站开发,推荐使用SuperSlide 插件-Tab标签切换,图片滚动,无缝滚动,焦点图

    SuperSlide 致力于解决网站大部分特效展示问题,使网站代码规范整洁,方便维护更新.网站上常用的“焦点图/幻灯片”“Tab标签切换”“图片滚动”“无缝滚动”等只需要一个SuperSlide即可解 ...

  2. springboot 使用JPA自动生成Entity实体类的方法

    1. 2. 3.添加数据库 4. 5. 6. 7.点击OK完成. 8.去掉红色波浪线方法. 9.配置数据源 完成!

  3. php数组函数有哪些操作?php数组函数的应用

    PHP 的数组是一种很强大的数据类型,与此同时 PHP 内置了一系列与数组相关的函数可以很轻易的实现日常开发的功能.但是我发现好像很多小伙伴都忽略了内置函数的作用(比如我自己就编写过一些有关数组操作的 ...

  4. java 线程池简单例子

    package com.hra.riskprice; import com.hra.riskprice.SysEnum.Factor_Type; import com.hra.riskprice.po ...

  5. urlrewrite的rule怎么写

    一.正则表达式教程 常用正则如下: .              换行符以外的所有字符 \w          匹配字母或数字或下划线或汉字 \s           匹配任意的空白符 \d     ...

  6. 关于esp32的省电模式的WiFi连接

    对于ESP32,其作为一款集成了2.4GHz WiFi和蓝牙双模块的单芯片,所有基于wifi和蓝牙开发是学习esp32的重要一环,今天WiFi原理和网络结构 可以点击链接进行详细的了解,这里就不做详细 ...

  7. 进程池、tornado、字体

    协程:   import grequests from fake_useragent import UserAgent   urls=[f'http://bir删d.so/search?page={p ...

  8. 冲刺博客NO.8

    今天做了什么: 多天学习后,实现了短信验证的功能,可以选择国家,可以在Mob的后台管理短信验证 遇到的困难: 注册回调事件,afterEvent的判定(事件完成后调用)

  9. git 包教包会

    # Git全面解析 版本控制工具:VSS.CVS.SVN.Git等,其中Git属于绝对霸主地位. 注意:一般版本控制工具包含两部分 客户端(本地):本地编写内容以及版本记录 服务端(网盘):将内容和版 ...

  10. SDWebImage源码分析

    1.概述 SDWebImage是iOS开发中,被广泛使用的一个第三方开源库,提供了图片从加载.解析.处理.缓存.清理等一些列功能,让我们能够专心于业务的处理.本篇会从SDWebImage的源码,来一步 ...