Quartz暂停后再恢复时job执行多次

quartz暂停任务恢复之后会把之前的任务重新执行 quartz暂停任务恢复之后会把之前的任务重新执行遇到的问题1.失效阈值概念作用2.超时策略SimpleTrigger立即执行定时任务不立即执行CronTrigger立即执行定时任务不立即执行 遇到的问题 最近在使用quartz做定时任务,在暂停quartz定时任务后,当你恢复这个任务的时候,它会一股脑的把你暂停之时起,到你恢复时,这期间错过的任务全部执行一遍,这可不是我想要的。 下面讲讲怎么样解决 首先要先明确几个概念 1.失效阈值 概念 quartz配置中有一个属性叫做misfireThresho 阅读详情

问题描述:Quartz暂停后,恢复出现多次执行Job,下面是源码操作

1、Quartz创建一个Job任务,这个很简单

/**
     * 新增/修改任务
     * @param quartz
     * @return
     */
    @Override
    public Result saveJob(QuartzJob quartz,Object obj){
        try {
            //如果是修改  展示旧的 任务
            if(quartz.getOldJobGroup() != null && !"".equals(quartz.getOldJobGroup())){
                JobKey key = new JobKey(quartz.getOldJobName(),quartz.getOldJobGroup());
                scheduler.deleteJob(key);
            }
            //构建job信息
            //构建job信息
            Class cls = null;
            //第一种方式:从页面传入值 如:包+类 包名获取class对象
            if (StringUtils.isNotEmpty(quartz.getJobClassName())){
                cls = Class.forName(quartz.getJobClassName());
            }
            //第二种方式:直接使用obj对象获取class
            if (cls==null&&obj!=null){
                cls = obj.getClass();
            }
            cls.newInstance();
            JobDetail job = JobBuilder.newJob(cls).withIdentity(quartz.getJobName(),
                    quartz.getJobGroup())
                    .withDescription(quartz.getDescription()).build();
            //添加参数
            job.getJobDataMap().put("jobParam", quartz.getJobDataParam());
            // 触发时间点
            CronScheduleBuilder cronScheduleBuilder = CronScheduleBuilder.cronSchedule(quartz.getCronExpression().trim());
            cronScheduleBuilder.withMisfireHandlingInstructionDoNothing();
            Trigger trigger = TriggerBuilder.newTrigger().withIdentity("trigger"+quartz.getJobName(), quartz.getJobGroup())
                    .startNow().withPriority(quartz.getPriority()).withSchedule(cronScheduleBuilder).build();
            //交由Scheduler安排触发
            scheduler.scheduleJob(job, trigger);
        } catch (Exception e) {
            e.printStackTrace();
            return Result.error();
        }
        return Result.ok();
    }

2、暂停Job任务

/**
     * 停止任务
     * @param jobName
     * @param jobGroup
     * @return
     */
    @Override
    public Result pauseJob(String jobName, String jobGroup) {
        JobKey key = new JobKey(jobName,jobGroup);
        try {
            scheduler.pauseJob(key);
        } catch (SchedulerException e) {
            e.printStackTrace();
            return Result.error();
        }
        return Result.ok();
    }```
3、恢复Job任务

```java
/**
     * 恢复任务
     * @param jobName
     * @param jobGroup
     * @return
     */
    @Override
    public Result resumeJob(String jobName, String jobGroup) {
        JobKey key = new JobKey(jobName,jobGroup);
        try {
            scheduler.resumeJob(key);
        } catch (SchedulerException e) {
            e.printStackTrace();
            return Result.error();
        }
        return Result.ok();
    }

结果:
在这里插入图片描述
暂停是没问题,恢复Job就出现多次执行Job情况,经过定位和查找资料,发现Quartz暂停后 恢复启动 为什么会执行多次 会把暂停中间需要执行的次数在恢复启动时一次补偿执行完毕
cronScheduleBuilder.withMisfireHandlingInstructionDoNothing();因为这正是WithMisfireHandlingInstructionIgnoreMisfires()所要求的,重做所有错过的周期。
但是知道原理,还是要解决现实问题。
quartz.properties中还需要配置这个参数值,要正确的值,如下:

#这个时间大于10000(10秒)会导致MISFIRE_INSTRUCTION_DO_NOTHING不起作用。  
org.quartz.jobStore.misfireThreshold = 6000

好啦,问题保管解决,不解决你找我!

解释下这个配置设置的意义:

misfireThreshold表示实际执行时间与下一次应该执行时间之间的差值,超过这个差值就不会执行,低于这个差值就会执行。

比如我每3秒执行一次,misfireThreshold=6000,当你暂停低于6秒内,它会弥补执行,超过6秒,它就不再弥补执行了。

C#--使用Quartz实现定时任务的暂停定时、恢复定时、关闭定时等操作 基于Quartz3.0版本总结一些quartz定时任务的暂停、恢复、删除等操作。定时任务的暂停、删除等操作主要是基于JobKey或TriggerKey。 阅读详情

相关推荐

SpringBoot集成Quartz实现定时任务的动态创建、启动、暂停、恢复、删除

看了好多文章,都只讲了基础的demo用法,也就是简单的创建运行定时任务,对定时任务的管理却很少。我这里从0开始搭建一个简单的demo,包括定时任务的各种操作,以及API的一些用法,可以实现大多场景的需求。如:普通定时任务的创建、启动、停止。动态创建定时任务,如创建一个订单,5分钟后执行某某操作。

z_ssyy的博客 3552

quartz 暂停后重新启动,在暂停时 被暂停后的任务,在启动后会补偿执行即 会连续多次调用job中的execute方法。

调度(scheduleJob)或恢复调度(resumeTrigger,resumeJob)后不同的misfire对应的处理规则 CronTrigger  withMisfireHandlingInstructionDoNothing ——不触发立即执行 ——等待下次Cron触发频率到达时刻开始按照Cron频率依次执行 withMisfireHandlingInstruct

rabbit0708的专栏 1万+

任务调度框架 quartz 和 xxl-job - 下

quartz 的分析见上一篇 博文 简介 xxl-job 是一个轻量级分布式任务调度平台,XXL-JOB 目前已接入多家公司的线上产品线,而且有完善的 说明文档,相比 quartz 轻量,易学习,易扩展。 作者在其 文档 中对 xxl-job 的特性、如何入门、具体使用、配置以及架构都有完整的说明,在次简单列举几条特性: 支持在可视化调度中心中动态修改任务状态、暂停/恢复任务...

Duan的博客 8318

springboot整合quartz实现手动控制任务启动,暂停,重启

Maven依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-quartz</artifactId> <version>2.5.4</version> </dependency> Job public cl

qq_44073614的博客 2052

告别反复格式化!用Ventoy制作2025年终极启动盘,Windows/Linux/macOS一网打尽

本文详细介绍了如何使用Ventoy制作2025年终极多系统启动盘,彻底告别反复格式化U盘的烦恼。Ventoy通过创新的引导加载器架构,允许用户在一个U盘内同时存放并直接启动Windows、Linux、macOS等多种系统镜像和WePE等维护工具,实现真正的非破坏性管理和极高的U盘利用率。文章涵盖从安装配置、镜像库构建到安全启动设置等全流程实战指南。

weixin_29280219的博客 239

HFSS新手避坑指南:从零搭建T形波导功分器(含参数扫描与优化实战)

本文为HFSS新手提供T形波导功分器设计的详细指南,涵盖基础设置、建模技巧、参数扫描与优化实战。重点解析内场分析中的常见陷阱,如单位设置、波端口定义和布尔运算错误,并分享优化设计的关键步骤,帮助工程师快速掌握HFSS在微波器件设计中的应用。

weixin_27442001的博客 138

Java暂停quartz_quartz 暂停后启动问题

近日由于项目需要用到quartz组件实现调度管理功能,想要实现调度的启动和暂停以及恢复功能,但是暂停遇到问题暂停后重新启动,会连续多次调用job中的execute方法。如果当前工作的处理时间过长必然会导致问题。代码如下,急求帮助importjava.util.Date;importorg.quartz.JobDetail;importorg.quartz.Scheduler;importo...

weixin_42165712的博客 874

告别手动复制粘贴:3种高效合并Excel表格的方法对比(含代码)

本文对比了VBA、Power Query和Python三种高效合并Excel表格的方法,并提供了可直接运行的代码。针对不同数据量、更新频率和技术背景,详细分析了各方案的优缺点与适用场景,帮助读者告别低效的手动操作,实现自动化数据整合。

weixin_29057237的博客 439

Quartz执行逻辑(七)任务的暂停和恢复

Quartz执行逻辑(七)任务的暂停和恢复1.简介2.暂停与恢复任务2.1暂停任务2.2恢复任务 1.简介 前面在Quartz执行逻辑(一)中说到trigger的状态是WAITING的,会在目标时间被触发,所以暂停与恢复任务自然是修改了trigger的状态。 2.暂停与恢复任务 2.1暂停任务 暂停任务时通过调用Scheduler的pauseJob方法来实现这个操作。这个方法一直向下调用到了JobStoreSupport中的pauseJob方法。该方法中是对任务的trigger进行操作的,也证实了前面的猜想

卷福。的博客 8620

2026开源API网关横评:微服务与AI流量治理如何选型

API网关作为微服务架构的流量入口,承担着路由转发、安全管控、限流熔断等核心职责,是分布式系统治理的基础设施。随着大模型应用的普及,AI流量对网关提出了新的要求,如流式响应支持、Token级限流、多模型路由和成本分账等能力。传统网关通过插件拼凑AI功能,而AI原生网关则将这些能力内建。面对众多开源方案,如何根据业务场景做出合理选型?本文对Kong、APISIX、Higress、Envoy Gateway、MAI Gateway等主流开源API网关进行横向评测,从性能、动态性、K8s集成度、AI流量治理等维度

weixin_34242819的博客 480

智能车学习日记【二】————十字和斜入十字

智能车学习日记【二】————十字和斜入十字 文章目录 智能车学习日记【二】————十字和斜入十字 前言 一、普通十字补线 二、斜入十字 1.判断是否为斜入十字和斜入十字类型 2.找斜入十字拐点 总结 前言 经过了一个多月的学习,小白的我终于也是能较稳定调出了2.8m以上的四轮车,过程中也遇到了很多困难,其中就有十字补线和斜入十字补线。尤其是斜入十字也是困扰了我快一周,现在和大家分享一下我处理斜入十字的方法(我的方法其实还有很多漏洞需要改进,仅供大家参考理解一下,欢迎各位在评论区指点出可

bsefef的博客 2739

关于quartz暂停恢复后,job执行多次的异常情况

我的quartzjob使用的是jdbcstore方式。我需要设置我的job可以实现故障恢复,又因为我使用的是crontrigger,因此我设置了misfire规则为withMisfireHandlingInstructionIgnoreMisfires。它的意思就是在系统重新启动后,根据第一个错过的时间恢复所有错过的任务,随后按照正常的规则执行。这个是没有问题的。   但是,在我对该任务执行完

u013752422的博客 6153

StarRocks FE启动异常

服务器断电,StarRocks FE 启动失败。

qq_15138049的博客 1110

Quartz的任务的临时启动和暂停和恢复

Quartz的任务的临时启动和暂停和恢复 在项目中需要手动启停某些服务,那么需要有一个控制这些任务的类。由于任务是有Quartz控制的,我们只需要通过Quartz的相关的API实现相关的功能即可。 package com.gbsoft.rpt.qtz; import java.util.Date; import java.util.List; import java.util

不了了之专栏 2281

【ANSYS APDL】提取结构刚度矩阵完整过程--附Python代码实现

ANSYS的结构刚度矩阵提取中一些操作技巧

m0_61038364的博客 1万+

Android 13.0 SystemUI下拉状态栏背景增加高斯模糊背景

在13.0的产品开发中,发现现在很多产品都是高斯模糊背景的,这种高斯模糊背景看起来效果很不错,产品开发需要SystemUI下拉状态栏背景也是高斯模糊背景,所以就要来实现下拉状态栏高斯模糊背景

安卓兼职framework和app工程师的博客 2668

springboot集成quartZ实现动态JOB管理

quartZ Job管理欢迎使用Markdown编辑器获取所有JOB信息功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入...

wh2574021892的博客 747

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

quartz(六)定时任务的暂停、关闭等操作说明

定时任务的暂停、关闭等操作说明 基于quartz3.0版本总结一些quartz定时任务的暂停、恢复、删除等操作。 定时任务的删除等操作主要是基于JobKey或TriggerKey。 暂停Job: //通过JobName以及JobGroup获得JobKey JobKey jobKey = JobKey.jobKey("aaaa" + 1, JOB_GROUP_NAME); ...

swimming_lu的博客 8328

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

任务调度框架quartz使用总结(异常处理,解决恢复后多次调度处理)

任务调度框架quartz使用总结(异常处理,解决恢复后多次调度处理) 首先先说说什么是调度框架,大白话所谓的调度框架你可以把它看成一个定时任务管理框架,并且quartz框架是多线程的, quartz最主要的三大基本特性: (1)调度器Scheduler(控制调度) (2)Trigger(定义触发的条件)这里的条件 ,可以用类似于‘0/20 * * * * ?’这种表达式来表示 ...

杨杨杨~~的博客 1万+

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Quartz.net的使用——显示任务信息、暂停、恢复、显示下次触发时间、禁止并发运行

最近在使用Quartz.net开发项目的时候,因为业务需求,我需要在页面进行任务的管理,比如暂停、恢复、显示下次执行时间等。网上关于C#中的Quartz的信息很少,因此我很多是通过查找Java的API完成的,如果大家需要其它需求,也可以直接查找Java中Quartz怎么使用的就行。 这里我使用的是基于配置文件的方式进行的,对于Quartz.net不熟悉的可以看我的...

有问题请发邮箱dengyifanlittle@163.com进行讨论 6666

Spring Boot集成Quartz实现定时任务的动态创建、启动、暂停、恢复、删除

Quartz

Angus博客 6218

SpringBoot集成Quartz实现定时任务的动态创建、启动、暂停、恢复、删除。

作者:毅大师blog.youkuaiyun.com/qq_39648029/article/details/108993476看了好多文章,都只讲了基础的demo用法,也就是简单的创建运行定时任务,...

Java知音 1812

quartz 启动后执行一次_SpringBoot集成Quartz实现定时任务的动态创建、启动、暂停、恢复、删除。...

本文同名博客老炮说Java:https://www.laopaojava.com/,每天更新Spring/SpringMvc/SpringBoot/实战项目等文章资料顺便再给大家推荐一套SpringCloud微服务教程,方便学习:SpringCloud微服务电商项目教程 - 老炮说Java-程序员编程资料和编程经验分享平台​www.laopaojava.com教程主要包含下面内容:看了好多文章,都...

weixin_39631649的博客 1773

Quartz 暂停后恢复任务,任务如何不会被misfire处理

暂停后恢复任务如何忽略misfire1.背景2.处理方法 1.背景 任务如果在暂停期间有本该触发的情况,但是由于被暂停了没有触发,那么在任务恢复的时候就会被检测到它misfire了。此时MisfireHandler线程就会根据添加任务时的misfire策略去处理它。但是如果想要忽略这种misfire的情况该怎么做呢,人为的暂停不算是misfire,遇到宕机,断电这种情况才算。 2.处理方法 在Quartz执行逻辑(七)任务的暂停和恢复中说到了,在resumeTrigger方法中如果nextFireTime小

卷福。的博客 1121
上一篇: Hadoop3.2 Yarn集群模式搭建
下一篇: Win11承诺的支持安卓App终于更新了,上班刷抖音不是梦
Joe192
博客等级 码龄15年 4606粉丝 56原创
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值