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

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

CronTrigger 

withMisfireHandlingInstructionDoNothing
——不触发立即执行
——等待下次Cron触发频率到达时刻开始按照Cron频率依次执行

withMisfireHandlingInstructionIgnoreMisfires
——以错过的第一个频率时间立刻开始执行
——重做错过的所有频率周期后
——当下一次触发频率发生时间大于当前时间后,再按照正常的Cron频率依次执行

withMisfireHandlingInstructionFireAndProceed
——以当前时间为触发频率立刻触发一次执行
——然后按照Cron频率依次执行


SimpleTrigger 

withMisfireHandlingInstructionFireNow
——以当前时间为触发频率立即触发执行
——执行至FinalTIme的剩余周期次数
——以调度或恢复调度的时刻为基准的周期频率,FinalTime根据剩余次数和当前时间计算得到
——调整后的FinalTime会略大于根据starttime计算的到的FinalTime值

withMisfireHandlingInstructionIgnoreMisfires

——以错过的第一个频率时间立刻开始执行
——重做错过的所有频率周期
——当下一次触发频率发生时间大于当前时间以后,按照Interval的依次执行剩下的频率
——共执行RepeatCount+1次

withMisfireHandlingInstructionNextWithExistingCount
——不触发立即执行
——等待下次触发频率周期时刻,执行至FinalTime的剩余周期次数
——以startTime为基准计算周期频率,并得到FinalTime
——即使中间出现pause,resume以后保持FinalTime时间不变


withMisfireHandlingInstructionNowWithExistingCount
——以当前时间为触发频率立即触发执行
——执行至FinalTIme的剩余周期次数
——以调度或恢复调度的时刻为基准的周期频率,FinalTime根据剩余次数和当前时间计算得到
——调整后的FinalTime会略大于根据starttime计算的到的FinalTime值

withMisfireHandlingInstructionNextWithRemainingCount
——不触发立即执行
——等待下次触发频率周期时刻,执行至FinalTime的剩余周期次数
——以startTime为基准计算周期频率,并得到FinalTime
——即使中间出现pause,resume以后保持FinalTime时间不变

withMisfireHandlingInstructionNowWithRemainingCount
——以当前时间为触发频率立即触发执行
——执行至FinalTIme的剩余周期次数
——以调度或恢复调度的时刻为基准的周期频率,FinalTime根据剩余次数和当前时间计算得到

——调整后的FinalTime会略大于根据starttime计算的到的FinalTime值

MISFIRE_INSTRUCTION_RESCHEDULE_NOW_WITH_REMAINING_REPEAT_COUNT
——此指令导致trigger忘记原始设置的starttime和repeat-count
——触发器的repeat-count将被设置为剩余的次数
——这样会导致后面无法获得原始设定的starttime和repeat-count值




问题:想要实现调度的启动和暂停以及恢复功能,但是暂停遇到问题
暂停后重新启动,会连续多次调用job中的execute方法。如果当前工作的处理时间过长必然会导致问题。

答案:

1
misfireInstruction = CronTrigger.MISFIRE_INSTRUCTION_DO_NOTHING
2
quartz.properties
#这个时间大于10000(10秒)会导致MISFIRE_INSTRUCTION_DO_NOTHING不起作用。
org.quartz.jobStore.misfireThreshold = 5000

代码:

public String add() throws IOException, SchedulerException {// 一定要紧跟Validate之后写验证结果类
String seconds = job.getCronExpression();
//String cronExp = "0/" + seconds + " * * * * ?";
String cronExp = seconds;
job.setCronExpression(cronExp);
Scheduler scheduler = schedulerFactoryBean.getScheduler();
TriggerKey triggerKey = TriggerKey.triggerKey(job.getJobName(), job.getJobGroup());


// 获取trigger,即在spring配置文件中定义的 bean id="myTrigger"
CronTrigger trigger = (CronTrigger) scheduler.getTrigger(triggerKey);


// 不存在,创建一个
if (null == trigger) {
JobDetail jobDetail = JobBuilder.newJob(QuartzJobFactory.class)
.withIdentity(job.getJobName(), job.getJobGroup()).build();
jobDetail.getJobDataMap().put("scheduleJob", job);


// 表达式调度构建器
CronScheduleBuilder scheduleBuilder = CronScheduleBuilder.cronSchedule(job.getCronExpression());


// 按新的cronExpression表达式构建一个新的trigger
trigger = TriggerBuilder.newTrigger().withIdentity(job.getJobName(), job.getJobGroup())
.withSchedule(scheduleBuilder.withMisfireHandlingInstructionDoNothing()).build();
System.out.println("trigger.getMisfireInstruction() = "+trigger.getMisfireInstruction());
scheduler.scheduleJob(jobDetail, trigger);
} else {
// Trigger已存在,那么更新相应的定时设置
// 表达式调度构建器
CronScheduleBuilder scheduleBuilder = CronScheduleBuilder.cronSchedule(job.getCronExpression());


// 按新的cronExpression表达式重新构建trigger
trigger = trigger.getTriggerBuilder().withIdentity(triggerKey).withSchedule(scheduleBuilder.withMisfireHandlingInstructionDoNothing()).build();
System.out.println("trigger.getMisfireInstruction() = "+trigger.getMisfireInstruction());
// 按新的trigger重新设置job执行
scheduler.rescheduleJob(triggerKey, trigger);
}


return SUCCESS;
}




PCB布线避坑指南:为什么你的差分线等长总调不好?AD19蛇形等长技巧详解 本文详细解析了AD19环境下PCB差分线等长调整的核心技巧与常见问题。从差分信号等长的底层逻辑到AD19规则配置,再到蛇形等长高级技巧和信号完整性验证,帮助工程师解决差分线等长调整中的难题,提升高速PCB设计的信号质量。 阅读详情

相关推荐

一、Abaqus CAE 入门操作(薄膜应力计算)

一、Abaqus CAE 入门操作(薄膜应力计算)

A20802013的博客 4362

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

问题描述: 1、Quartz创建一个Job任务,这个很简单 /** * 新增/修改任务 * @param quartz * @return */ @Override public Result saveJob(QuartzJob quartz,Object obj){ try { //如果是修改 展示旧的 任务 if(quartz.getOldJobGroup() != null &am

Joe192的博客 2802

PADS VX2.4差分对设置避坑指南:常见错误与解决方案

本文深度解析了在PADS VX2.4中进行高速PCB设计时,差分对设置的核心要点与常见陷阱。针对Layout规则设置、Router布线实战中的阻抗控制、线长匹配等关键环节,提供了具体的避坑指南和解决方案,帮助工程师确保信号完整性,提升设计质量。

weixin_29216049的博客 359

Quartz定时任务框架实战教程(基础Java,附源码)

Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用。Quartz可以用来创建简单或为运行十个,百个,甚至是好几万个Jobs这样复杂的程序。

Ansys Zemax | 公差分析中的补偿器优化:如何提升系统良率?

本文深入探讨了在Ansys Zemax公差分析中如何有效设置与优化补偿器以提升系统良率。文章指出,补偿器是连接理想设计与现实生产的关键,通过模拟实际装配中的调整(如后焦距),能显著改善公差分析的“悲观”预测。详细介绍了补偿器的添加方法、多补偿器策略、评价函数设计以及通过灵敏度分析和蒙特卡洛档案优化补偿效果,旨在帮助光学工程师制定更符合生产实际的公差策略,从而有效提升产品良率。

weixin_28419039的博客 618

开关电源|控制方式PWM、PFM、混合调制

频率调制器根据误差放大器的输出大小来改变方波信号的频率,若负载电流突然增加,输出电压 Vout随之下降,反馈电压 VFB 减小,此时误 差放大器的输出增高,频率调制器输出方波信号的频率增大,增加电感充电次数;若负载电流突然增加,输出电压Vom随之下降,反馈电压Vr减小,此时误差放大器的输出增高,PWM比较器输出方波信号的占空比增大,增加电感充电时间:若负载电流突然下降,PWM比较器输出方波信号的占空比减小,减少电感充电时间,从而稳定输出电压。它是在固定开关频率下,通过改变脉冲宽度来调节占空比的。

weixin_46969363的博客 1万+

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

Windows配置CA证书颁发机构+NPS-DCServer

Windows配置证书颁发机构+NPS-DCServer

新时代先锋的博客 3万+

Java暂停quartz_quartz 暂停后启动问题

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

weixin_42165712的博客 874

相机Camera日志分析之二十六:高通相机Camx 基于预览1帧的process_capture_request重要完整日志【见注释】

文章摘要:该日志记录了一个相机预览请求的处理流程。系统从HAL层开始处理capture_request,填充预览/拍照的buffer数据,并激活相关pipeline。流程涉及多个模块(ChiNodeWrapper、IFE、IPE等)的协同工作,包括获取ImageBuffer、设置请求映射关系、处理特征美颜参数(开关状态0,级别1)等关键步骤。日志详细展示了从请求下发到各节点处理的完整链路,包含多次buffer获取、fence设置及数据传递过程,最终完成预览帧数据的处理和保存(第0帧和第1帧)。该流程体现了移

513

【Bug已解决】Auto mode cannot determine the safety of an action — Claude Code 自动模式安全判断失败解决方案

将已知安全的操作添加到白名单,分类器不再拦截这些操作。# 步骤 1:编辑 Claude Code 配置"Read","Write"EOF# 步骤 2:白名单中的操作将自动通过# 不在白名单中的操作仍需分类器判断# 步骤 3:重启 Claude Codeclaude方案适用场景推荐指数难度方案一:手动审批偶发回退,安全优先⭐⭐⭐⭐⭐低方案二:/compact 压缩上下文超限导致⭐⭐⭐⭐低方案三:拆分步骤复杂操作触发⭐⭐⭐⭐低方案四:跳过审批隔离环境,CI/CD。

博客 1万+

Spring中配置Quartz的misfireInstruction

最近在做一个自动发送邮件的小功能,其中用到了Quartz来做事件触发。首先说一下,Quartz确实是个不错的开源项目,功能强大,配置灵活。在此就不在详述,喜欢的朋友可以去它的官方网站看文档和API:Quartz官方网站,站内也有许多介绍它如何配置使用的文章,多搜多搜,呵呵! 我这里邮件的重点是附件,所以确认附件的数据准确性很重要。所以当数据异常的时候,我们需要在任务执行的时间点之前将正在进行的任

george_hsu的专栏 1万+

Vue3 - [最强] 超详细 Element Plus 组件库主题颜色进行 “统一全局“ 替换,将默认的蓝色主题色更换为其他自定义颜色,覆盖原来的主题色改为自己的颜色(完美解决主题色不生效、没反应)

elementplus修改主题色,vue3+element-plus主题色更换,vue3vite如何修改扩展elementplus主题色样式,全局设置elementplus主题色,有什么办法可以直接全局修改主题色,对elementplus默认蓝色不满意怎么替换更改其他颜色,elementplus覆盖默认主题色,elementplus主题色官方文档,vue3中修改elementplus主题色,elementplus修改主题色不生效怎么办,elementplus如何修改主题颜色,eleme

🏆 前端领域优质创作者 1万+

springboot整合quartz实现定时任务的动态修改,启动,暂停等操作

一个定时任务调度框架,简单易用,功能强大可以使实现定时任务的。在项目开发过程当中,某些定时任务,可能在运行一段时间之后,就不需要了,或者需要修改下定时任务的执行时间等等。需要在代码当中进行修改然后重新打包发布,很麻烦。使用Quartz来实现的话不需要重新修改代码而达到要求。成功执行任务这种方式是写死在程序当中的,也存在修改不方便的情况!!!!!!

kkkkatoq的博客 2649

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

CronTrigger的未触发授命学习

CronTrigger的未触发指令MISFIRE_INSTRUCTION_FIRE_ONCE_NOW与默认的MISFIRE_INSTRUCTION_SMART_POLICY指令功能一致,另外还有一种指令.MISFIRE_INSTRUCTION_DO_NOTHING,实例区别如下: MyQuartzJobBean.java: package quartz.example.example5.te

王新友的博客 1850

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Job定时任务不允许并行&错过(misfire)策略说明

将所有错过的执行时间点全都补上,例如,任务15s执行一次,执行的任务错过了4分钟,则执行MisFire时,一次性执行4*(60/15)=16次任务。任务完成后,如果下次触发时间为null,则状态变更为COMPLETE,如果下次触发任务不为nul。列,对quartz而言,就已经调度完成了,后续任务的执行状态无法跟追,导致原生注解@Disa。l,则状态变更为WAITING,进入等待下一次任务的触发。当任务执行时间过长、服务停机、任务暂停等原因,导致其超过其下次执行的时间点时,就。

liu_xue_xue的专栏 1879

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...

quartz2.3.0(十五)执行、暂停、继续执行、清除,花式操作数据库中持久化的job任务...

############################################################################################################################################# 1、 建立数据库11张表 ################...

weixin_30323631的博客 746

quartz定时器的处理

一、quartz的简单配置 1、引入定时器的maven包 <dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz</artifactId> <version>2.2.1</version> </dependency>

weixin_43288858的博客 678

定时任务系列(3)-Quartz动态定时任务

Quartz定时任务框架经常用于系统后台业务异步处理。平常我们使用时,主要是通过手工编写配置代码文件方式添加修改定时任务,然后重启系统。有时候我们需要根据业务运营需要,动态添加修改定时任务,比如添加新的定时任务、修改任务执行时间、暂停定时任务、删除定时任务等,并且监控定时任务状态,而又不想重启系统,这时就需要系统具备动态管理定时任务的功能。Quartz提供了一系列组件,支持动态管理定时任务的功能。

CodeV的博客 3102

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

Quartz

Angus博客 6218

CronTrigger的未触发指令学习

CronTrigger的未触发指令MISFIRE_INSTRUCTION_FIRE_ONCE_NOW与默认的MISFIRE_INSTRUCTION_SMART_POLICY指令功能一致,另外还有一种指令.MISFIRE_INSTRUCTION_DO_NOTHING,实例区别如下: MyQuartzJobBean.java:   package quartz.example.example...

xj8844的博客 713

quartz暂停后启动,禁止并发运行暂停期缓存的任务

相关文档:http://wenku.baidu.com/view/9337a40303d8ce2f006623ba.html 做的一个定时短信系统,quartz定时扫描发送短信,发现隔一段时间后(大概在1隔礼拜)任务管理器会暂停(原因未明),但定时器还在运行,等过几个钟头后任务管理器启动,会将暂停时未运行的任务用并发的方式运行,造成重复发送短信的问题。解决方法,配置,禁止任务并发运行(待前一...

henghengdh的专栏 482

quartz定时任务不执行

quartz定时任务执行一段时间不执行的原因 数据库表QRTZ_TRIGGERS 里的TRIGGER_STATE 字段的值自动修改为ERROR了 ,quartz定时任务是不扫描这种ERROR情况. 之所以出现ERROR 原因在于job里有bug,导致quartz自动将状态改变,然后quartz不执行ERROR状态的job. 1.查找原因 原因如下图:( 查找原因的方法是 将ERROR改...

Q_love_ZYH 1万+

记一次Quartz重复调度(任务重复执行)的问题排查及解决,被老大骂了!

推荐:花了2万多买的Java架构师课程全套,现在分享给大家,从软件安装到底层源码(Java高级互联网架构师VIP教程) 1.引子 公司前期改用quartz做任务调度,一日的调度量均在两百万次以上。随着调度量的增加,突然开始出现job重复调度的情况,且没有规律可循。网上也没有说得较为清楚的解决办法,于是我们开始调试Quartz源码,并最终找到了问题所在。如果没有耐性看完源码解析,可以直接...

罗翔 1109

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

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

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

quartz计划调度使用心得

很多的项目中会有定时任务的

u013170645的专栏 520
上一篇: js中(function(){…})()立即执行函数写法理解
下一篇: quartz
rabbit0708
博客等级 码龄15年 12粉丝 27原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值