全网最好的一篇讲解Quartz的MisFire机制

本文深入探讨了Quartz框架中的MisFire现象及其补偿机制。详细解释了MisFire的判定标准和三种常见处理策略,通过具体案例帮助读者理解如何正确配置避免非预期行为。

Quartz框架中MisFire的理解

如各位希望转载或引用,请注明出处,尊重原创,谢谢。如有疑问或错误,欢迎邮件沟通。
​
gitHub地址:https://github.com/thinkingfioa
邮箱地址:thinking_fioa@163.com
博客地址: https://blog.youkuaiyun.com/thinking_fioa

本文重点

Quartz框架是Java生态下非常著名的定时任务框架,包括Spring中的诸多定时任务也是依赖于Quartz框架实现的。

本文重点讲解:Quartz框架中的MisFire怎么理解,还有MissFire后的补偿机制。网上非常多的博客,完全在照搬照翻英文文档,没有任何自己的理解,没有任何参考意义。都在搬运垃圾,强烈鄙视。

1. 背景

Quartz框架是Java生态中的一套非常优秀的定时任务框架,使用Quartz框架时,需要注意Quartz强烈依赖主机时间。主机时间的任何飘动,可能导致Quartz定时任务的非预期执行或不执行。

任何定时框架,都可能存在MisFire的现象。何为MisFire,就是:周期性任务A需要在某个规定的时间执行,但是由于某种原因导致任务A未执行,称为MisFire。

Quartz常常由于下列几种情况导致任务的MisFire:

  1. Quartz的线程数较少,周期性任务较多且执行时间较长,导致某个时间点需要执行周期性任务A未被CPU调度到,导致MisFire。

  2. 将本地时间往后调整,直接跨过了周期性任务A,周期性任务A也被MisFire。

  3. 设置过去的时间为开始执行时间。例如当前时间是9:00:00,指定开始时间为7:00:00

如何设定任务的MisFire和MisFire后的补偿机制非常重要,对于改点官方文档描述较为模糊,网上一大批直接翻译官方文档的博客更是说的云里

评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值