栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Quartz Java恢复作业会执行多次

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Quartz Java恢复作业会执行多次

CronTrigger
通过记住的作品
nextFireTime
。创建触发器后,将对其
nextFireTime
进行初始化。每次触发作业
nextFireTime
都会更新。由于暂停时未触发作业,因此
nextFireTime
保持“旧”状态。因此,恢复作业后,触发器将返回每个旧的触发器时间。

问题是,触发器不知道它已被暂停。为了克服这个问题,进行了不点火处理。恢复作业后,

updateAfterMisfire()
将调用触发器的方法来更正
nextFireTime
。但是,如果
nextFireTime
和现在之间的差小于misfireThreshold,则不是这样。这样就永远不会调用该方法。此阈值的默认值为60,000。因此,如果您的暂停时间超过60s,一切都会好起来的。

由于您有问题,我认为没有。;)要解决此问题,您可以修改阈值或在周围使用简单的包装器

CronTrigger

public class PauseAwareCronTrigger extends CronTrigger {    // constructors you need go here    @Override    public Date getNextFireTime() {        Date nextFireTime = super.getNextFireTime();        if (nextFireTime.getTime() < System.currentTimeMillis()) { // next fire time after now nextFireTime = super.getFireTimeAfter(null); super.setNextFireTime(nextFireTime);        }        return nextFireTime;    }}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/495913.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号