配置定时任务参数
quartz.properties文件时
需要配置jobStore的超过时间数
默认为60秒(这里单位为毫秒)
org.quartz.jobStore.misfireThreshold = 60000
这个参数一般在多线程池条件下无效。
 
产生misfire失败的条件:
单线程执行定时任务
第一个任务的执行完后的结束时间 减去 第二个任务的开始时间 = 时间间隔
时间间隔 大于 60s时, 第二个任务不会被执行。
这个叫做失败临界值,或者临界时间
 
例如
设置quartz.properties
  1. org.quartz.threadPool.class: org.quartz.simpl.SimpleThreadPool
  2. org.quartz.threadPool.threadCount:
  3. org.quartz.threadPool.threadPriority:
  4. 设置临界时间为6
  5. org.quartz.jobStore.misfireThreshold:
 
设置任务每个5秒执行一次job.properties
  1. job.xxx.class=com.uelink.dkapi.job.RemindJob
  2. job.xxx.group=default
  3. job.xxx.id=
  4. job.xxx.cron=*/ * * * * ?
  5. job.xxx.enable=true
注意:xxx表示名字随意取
 
在定时任务中编写延迟RemindJob.java
休眠10秒,相当于任务执行时间为10s
  1. public class RemindJob implements Job{
  2.  
  3. @Override
  4. public void execute(JobExecutionContext context) throws JobExecutionException {
  5. System.out.println("微信小程序定时提醒通知开始");
  6. DateFormat df = new SimpleDateFormat("hh:mm:ss");
  7. System.err.println("[" + Thread.currentThread().getName() + "] Now: "
  8. + df.format(context.getFireTime()) + " Scheduled: "
  9. + df.format(context.getScheduledFireTime()) + " Previous: "
  10. + df.format(context.getPreviousFireTime()) + " Next: "
  11. + df.format(context.getNextFireTime()));
  12. try {
  13. Thread.sleep( * );
  14.  
  15. } catch (InterruptedException e) {
  16. e.printStackTrace();
  17. }
  18. System.err.println("线程休眠结束时间:"+df.format(new Date(System.currentTimeMillis())));
  19. }
  20.  
  21. }
 
产生错失情况
条件
org.quartz.jobStore.misfireThreshold时间6秒
每隔5秒执行一次,
一次执行10秒
 
结果为
  1. Now: :: Scheduled: :: Previous: :: Next: ::
  2.  
  3. Now: :: Scheduled: :: Previous: :: Next: ::
  4.  
  5. Now: :: Scheduled: :: Previous: :: Next: ::
  6.  
  7. Now: :: Scheduled: :: Previous: :: Next: ::
  8.  
  9. 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秒
 
结果
  1. Now: :: Scheduled: :: Previous: :: Next: ::
  2.  
  3. Now: :: Scheduled: :: Previous: :: Next: ::
  4.  
  5. Now: :: Scheduled: :: Previous: :: Next: ::
  6.  
  7. Now: :: Scheduled: :: Previous: :: Next: ::
  8.  
  9. 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. MySQL开发——【高级操作、五子句】

    高级新增操作 ①基本插入操作: insert into 数据表名称(字段) values (值); ②批量插入操作: insert into 数据表名称(字段) values (值1),(值2),(值 ...

  2. [字符串][NOIP2012]Vigenère密码

    Vigenère密码 题目描述 16世纪法国外交家Blaise de Vigenère设计了一种多表密码加密算法——Vigenère密码.Vigenère密码的加密解密算法简单易用,且破译难度比较高, ...

  3. AutoCAD开发4--添加块)

    Private Sub CommandButton3_Click() Dim pInsertPnt As Variant 'pInsertPnt(0) = 100.5141: pInsertPnt(1 ...

  4. 搭建django

    虚拟环境配置 pip install virtualenv 一般需要安装一个管理工具:pip install virtualenvwrapper-win 只有它可以使用workon 创建虚拟环境:mk ...

  5. pyhton 核心编程 正则表达式习题

    方案一 import re #1. 识别下列字符串:“bat,” “bit,” “but,” “hat,” “hit,” 或 “hut” import re def test1(self): bt = ...

  6. qhfl-7 结算中心

    结算中心,即从购物车前往支付前的确认页面,这里要开始选择优惠券了 """ 前端传过来数据 course_list 课程列表 redis 中将要存放的结算数据 { sett ...

  7. Solidity合约记录——(一)如何寻找以太坊真实Solidity源码

    在自主学习Solidity智能合约的过程中,第一份入手资料无疑是官方文档.感谢前辈们还能提供出文档的中文翻译,作为我入门的第一手资料:文末附上有用的学习链接{持续更新中} 阅读完基础文档同时上手合约后 ...

  8. PowerShe 使用证书签名 ll脚本

    1.创建自签名证书(如需要) PS C:\Windows\system32> New-SelfSignedCertificate -DnsName www.mycard.com -CertSto ...

  9. (钉钉)第三方WEB网站扫码登录

    年底在做钉钉和公司的知识库产品的对接,怎么使用钉钉api的如下: 第一步: 登录:https://oa.dingtalk.com/#/welcome 这点可以自己建立一个企业账号进行测试 点击工作台建 ...

  10. C++ lamba使用

    Moderm Effective C++ 条款31 第206提到了按引用捕获局部变量和函数形参时,如果lambda式的生命期依赖于局部变量和函数形参的生命期,需注意空悬引用的问题. 原书的例子不够直观 ...