配置定时任务参数
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. Solidity的三种转账方式与比较

    转账的3种方式 123 address.transfer()address.send()address.call.value().gas()() 转账transfer 12345678910 func ...

  2. 在WIN10上安装ESXI-Comstomer (转自技术社区)

    I recently required the use of ESXi Customizer to integrate some NIC drivers into my ESXi 5.5 ISO. H ...

  3. mysq

    https://blog.csdn.net/wwd0501/article/details/71171614 47.105.144.1 iptables -I INPUT -p tcp --dport ...

  4. vscode快捷键的中文版

    自己整理了一份vscode快捷键的中文版本

  5. ajax的另一种成功和失败回调函数

    第一种: function engline(){ var oldmsg = $('#lineso').val() if(oldmsg == null || oldmsg == '' || oldmsg ...

  6. python小结 1

    1.变量 记录状态 类型:数字,字符串,元组,列表,字典 可变不可变(内存地址不变的情况下,值能不能改变): 不可变:字符串,数字,元组 可变:列表,字典 访问顺序: 直接访问:数字 有序:字符串,列 ...

  7. 【APP测试(Android)】--硬件测试

  8. 【APP测试(Android)】--性能测试

  9. python中None与0、Null、false区别

    None是Python中的一个关键字,None本身也是个一个数据类型,而这个数据类型就是None,它可0.空字符串以及false均不一样,这些都只是对象,而None也是一个类. 给个bool测试: v ...

  10. 03-jQuery动画效果

    Query提供的一组网页中常见的动画效果,这些动画是标准的.有规律的效果:同时还提供给我们了自定义动画的功能. 显示动画 方式一: $("div").show(); 解释:无参数, ...