quartz - 宕机后的设置

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

quartz,java世界里面的任务管理容器。

至于为什么会有misfire这个概念,我想可以重这三个方面来进行说明:

1 所有的线程都在忙于更高优先级的任务

2 任务本身CRASH了

3 代码的BUG,导置错误的设置了JOB

基于这3种原因,其实也是现实世界中的常理。没有任何事情,都能保证100%运行OK。quartz提出了misfire的理论,让任务在错过之后,还能正常的运行。

以下分别对几种类型的JOB进行说明:

without repeating(不重复的JOB)

这里只列出有代表的属性进行说明,这个JOB执行的时间为过去10秒之前,所以肯定会触发misfire

withMisfireHandlingInstructionFireNow(失效之后再恢复并马上执行)

就是当某个任务在理论执行的时间点没有执行,当任务正常起来之后,马上就去执行刚才未执行的任务。

withMisfireHandlingInstructionNextWithRemainingCount(失效之后不处理)

错过之后,不用管。

其它详细说明

这个其实比较简单。来看第二种

repeating fixed number of times(多次执行)

这个任务是说从9点开始,每隔一个小时,会执行一次,直到下午4点.

withMisfireHandlingInstructionFireNow(失效之后,再启动马上执行,总次数还是7次)

如果任务在10点的时候没有触发,但是在10:15分的时候执行了misfire,以后每次正点执行的时间就会较初始值晚15分钟,直到16:15

withMisfireHandlingInstructionNowWithExistingCount(失效之后,再启动之后马上执行,但是起始次数清零,总次数=7+当前misfire执行次数-1)

如果任务在10点没有触发,10:15分执行了misfire,以后执行时间都会较初始值晚15分钟,但是执行次数还是原来的7次,就会到17:15了。

withMisfireHandlingInstructionNextWithRemainingCount(失效之后,不管donothing,总次数还是7次)

withMisfireHandlingInstructionNextWithExistingCount(失效之后,donothgin,总次数=misfire的次数+7)

详情如图:

repeating infinitely(不停的执行)

这个任务是说从9点开始,每隔一个小时就会执行。

withMisfireHandlingInstructionFireNow(每次失效之后,在下个失效节点再执行)

这个模式下,withMisfireHandlingInstructionNowWithRemainingCount ,withMisfireHandlingInstructionNowWithExistingCount都是 一个意思。

withMisfireHandlingInstructionNextWithRemainingCount(每次失效之后,在下个定义的时间点再执行)

这个同withMisfireHandlingInstructionNextWithExistingCount的配置

CRON triggers(表达式,最复杂的)

在每个星期的周一至周五的上午9点到下午17点,每隔一个小时执行一次。

withMisfireHandlingInstructionIgnoreMisfires(所有misfire的任务会马上执行)

打个比方,如果9点misfire了,在10:15系统恢复之后,9点,10点的misfire会马上执行

withMisfireHandlingInstructionDoNothing(所有的misfire不管,执行下一个周期的任务)

 

withMisfireHandlingInstructionFireAndProceed(会合并部分的misfire,正常执行下一个周期的任务)

假设9,10的任务都misfire了,系统在10:15分起来了。只会执行一次misfire,下次正点执行。

现在,你了解到,不同模式的相同配置,misfire的行为其实是不一样的。大的方向其实就三个

1 忽略

2 立即执行

3 继续

4 放弃

5 等待下一个周期

最终就是根据合适的策略,选择合适的misfire.

定时任务调度框架Quartz--Misfire处理规则 withMisfireHandlingInstructionIgnoreMisfires public static final int MISFIRE_INSTRUCTION_IGNORE_MISFIRE_POLICY = -1;        IgnoreMisfires策略会把所有错过的定时任务一次性执行。这个不是忽略已经错失的触发的意思,而是说忽略MisFire策略。它会在资源合适的时候,重新触发所有的MisFire任务,并且不会影响现有的调度时间。 pub 阅读详情

相关推荐

Quartz.NET学习系列(十一)--- Quartz.NET持久化及客户端服务器模式

持久化         Quartz.NET如果不进行数据库相关配置,则默认的执行模式为内存模式,优点是执行速度快,确定就是数据无法存储,宕机了需要重新开始。         持久化只需要做如下配置(以SQLServer为例) NameValueCollection properties = new NameValueCollection();

Eye_cng的专栏 3903

任务框架quartz的misfire的理解

     quartz,java世界里面的任务管理容器。 至于为什么会有misfire这个概念,我想可以重这三个方面来进行说明: 1 所有的线程都在忙于更高优先级的任务 2 任务本身CRASH了 3 代码的BUG,导置错误的设置了JOB 基于这3种原因,其实也是现实世界中的常理。没有任何事情,都能保证100%运行OK。quartz提出了misfire的理论,让任务在错过之后,还能正常...

iteye_14646的博客 793

Quartz.NET学习系列(十二)--- Quartz.NET集群

Quartz.NET提供了集群的配置,这个集群并不能达到负载均衡的效果,而仅仅提供了故障转移的功能,主要场景是:两个节点的Quartz.NET任务服务器同时连接到另一个节点的数据库服务器,当一个任务服务器宕机时,另一个任务服务器会启动。        集群的主要配置如下: properties["quartz.jobStore.clustered"] = "true"; 总的代码如下:

Eye_cng的专栏 3360

3.Quartz应用场景之应用重启后定时任务依然生效

默认你已掌握 Springboot 工程搭建 ApplicationRunner 环境信息 Quartz 2.3.0 Springboot 2.2.0 mysql IDE:idea 思路 定时任务配置持久化到数据库 搭建步骤 创建Quartz相关库表(脚本路径如下) quartz-2.3.0-SNAPSHOT\src\org\quartz\impl\jdbcjobstore\tables_mys...

Martian158的博客 2954

quartz集群(一)quartz集群介绍与springboot集成quartz集群方法

quartz部署多个节点时,某些无状态的任务在同一时间希望只有一个节点在执行,quartz集群自带状态管理。

w_t_y_y的博客 6526

【BigWorld 游戏服务器引擎】Cell 架构设计介绍,及Java实现方案的探索

横向扩展(Scalability):通过动态增减CellApp和BaseApp的数量,可以轻松应对玩家人数的变化。世界可以做得非常大,只需增加更多的 Cell。负载分离(Load Separation):将不同性质的负载分离,避免了单一进程瓶颈。CPU 密集型的实时计算(CellApp)和 I/O 密集型的数据操作(BaseApp)互不影响。高效的视野管理(AOI):每个 Cell 只关心自己区域内和边界上的实体,大大降低了计算复杂度。容错性:某个CellApp。

代码时光 1205

如果设定的定时任务因为服务关闭而未触发,那在重新启动服务以后,定时任务会自动触发吗...

如果设定的定时任务因为服务关闭而未触发,那么在重新启动服务以后,定时任务是不会自动触发的。定时任务是按照规定的时间间隔进行触发的,如果服务关闭期间没有运行定时任务,那么在重新启动服务后也不会补触发这些未触发的定时任务。 ...

weixin_42576410的博客 1017

门控时钟(clock gating)的DFT设计

在数字IC芯片中,时钟树的功耗占比可能高达30%,因此一般会采取门控时钟的方式来降低该部分的功耗。所谓门控时钟,就是在芯片实际工作过程中,有些信号或者功能并不需要一直开启,那么就可以在它们不用的时候将其时钟信号关闭。这样一来信号不再翻转,从而能够有效减少动态功耗。 目前门控时钟都采用集成门控时钟单元(ICG,integrated clock gating cell),其结构如下。由一个latch和一个与门(也有的是或门)组成,可以过滤掉EN信号中的毛刺。一般的工艺库中都会有专门的ICG以供调用。 插入IC

weixin_44746697的博客 3876

若依定时任务

表结构 目录 quartz框架

qq_40603125的博客 708

SpringBoot+Flowable 6.8.0实战:5分钟搞定免登录流程图设计器

本文详细介绍了如何通过SpringBoot与Flowable 6.8.0深度整合,快速实现免登录流程图设计器的集成方案。通过排除默认安全配置、自定义安全策略和用户模拟服务,开发者可在5分钟内完成设计器的部署,适用于快速原型开发和企业内部工具搭建。

weixin_29204205的博客 280

嵌入式SPI总线抽象设计:跨平台驱动与分层解耦实践

SPI(串行外设接口)是嵌入式系统中应用最广泛的同步串行通信协议,其核心价值在于高吞吐、低开销与硬件简洁性。其工作原理基于主从架构、全双工/半双工时序及片选(CS)控制,依赖CPOL/CPHA组合定义四种标准模式。在工程实践中,SPI常面临硬件资源受限、多外设共用总线、MCU平台迁移等挑战,导致驱动复用率低、维护成本高。通过结构体+函数指针实现的分层抽象——将物理总线、协议适配与设备驱动解耦,可显著提升代码可移植性与扩展性。该方法天然支持硬件SPI与GPIO模拟SPI双模式切换,并已在STM32等主流MCU

weixin_42601134的博客 60

Quartz学习研究(三):一个最基本的Quartz、Spring集群项目(附项目源代码)

1、前言:上篇文章已经介绍了quartz与spring集成,这篇文章会继续将上个项目部署到集群环境中。集群环境可解决服务器宕机数据丢失、多服务器间的定时冲突等问题。Quartz中的集群概念其实并不是真正服务器之间的通讯,而是通过同一套quartz的数据库来进行管理。 2、从官网或者quartz的jar包中找到tables_mysql.sql(以本次项目为例,如果是其他数据库找到对应的文件

夏煜正的专栏,曾经写过的一些代码,都是经历。 1914

基于ZYNQ的HP总线与DDR交互:实现PL与PS高效数据传输的完整指南

本文将深入探讨如何通过AXI HP总线实现PL与PS的DDR交互,结合代码示例、硬件配置与创新优化,助力开发者掌握这一关键技术。ZYNQ内部通过AXI HP接口直接连接PL与DDR控制器,PL通过AXI协议发送读写请求,绕过PS的CPU直接操作DDR。通过AXI HP总线实现PL与PS的DDR交互,开发者可充分发挥ZYNQ异构架构的优势。在Xilinx ZYNQ系列芯片中,PS(Processing System)与PL(Programmable Logic)的协同设计是其核心优势。

QQ_778132974的博客 1224

quartz mysql 分布式_SpringBoot与Quartz集成实现分布式定时任务集群的代码实例

Spring Boot与Quartz集成实现分布式定时任务集群直接贴代码POMxsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">4.0.0test.daemonclusterquartz0.0.1-SNAPSHOTjarclusterquartz...

weixin_28715953的博客 176

吉林大学数据库期末考试试卷讲解

给出几套期末真题及解析,给出复习建议。

一杯水果茶!足矣~ 3143

基于YOLOv11的无人机目标检测系统:实现drone、bird、aircraft多类别识别

采用改进的YOLOv11网络结构,平衡检测精度和速度融合VisDrone和UAVDT数据集,增强模型泛化能力设计多尺度特征融合模块,提升小目标检测性能开发直观的UI界面,便于实际部署和应用。

YOLO 325

Quartz - Misfire (for RAMJobstore)

JAVA任务调度 定时任务 Quartz Misfire for RAMJobstor

weixin_44612246的博客 1006

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

集群环境定时器更新数据库,只有一台应用执行

批处理任务通过quartz控制执行的时候,如果有多个部署,就要避免部署的不同应用上的定时任务同时执行而导致的错误。 通过oracle的行锁,控制quartz的执行。 使用spring+quartz+ibatis ibatis配置文件中里面的查询,如果发现存在对应的行被锁,直接抛出异常返回,知道当前任务正在执行 [code="ibatis"] select id, ty...

Fear can hold you prisoner,Hope can set you free. 180

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Quartz在服务异常中断或者重启后,不执行之前漏掉的任务,重新运行下一次任务...

Quartz默认重启后会执行之前的任务,所以如果不想执行之前漏掉的任务,需要设置一下两个地方: CRON triggers CronTrigger trigger = TriggerBuilder.newTrigger() .withIdentity(name, TRIGGER_GROUP) .withSchedule( CronScheduleBu...

weixin_30908941的博客 3186

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

SpringBoot 整合 Quartz

SpringBoot 整合 Quartz持久化到数据库

杨巅峰的博客 2901

Quartz动态设置并发数量

  quartz存在一个问题,当正在进行的任务已经达到了设置的个数,后续触发的任务没有线程可用,会导致系统宕机;   Quartz通过StdSchedulerFactory工厂创建调度器,initialize方法通过解析quartz.properties配置信息进行加载,默认线程个数为10,可以通过覆盖信息定义线程个数,通过Apollo信息进行线程个数配置 Schedu...

欢迎点赞 + 关注,开源项目见下方栏目 2116

quartz 持久化 mysql_quartz(三)任务持久化-jdbc篇(一看就会)

一、背景如果任务执行到一半突然宕机怎么办?能否重新执行任务?任务执行的数据能够以恢复吗?带着这些问题,我发现了几种持久化策略,先讲最简单,也是我们最为喜闻乐见的mysql吧!说干就干,我们来写一个最简单的吧。二、代码实现其实实现起来也很简单,主要步骤如下:在数据库控制台执行如下sql脚本##Quartzseemstoworkbestwiththedrivermm.mysql-2....

weixin_26908317的博客 735

quartz集群

quartz集群

qq_44952610的博客 306

Quartz分布式任务调度原理

什么是分布式定时任务调度 定时任务调度 在很多应用场景下我们需要定时执行一些任务,比如订单系统的超时状态判断、缓存数据的定时更新等等,最简单粗暴的方式是用while(true)+sleep的组合来空转,直到到达指定时间就执行任务,但这显然非常低效。更好的方法是使用系统提供的Timer定时器或者使用Quartz框架等等。 持久化 如果只是设置一两个固定的简单的定时任务,比如只需要定时把数据从磁盘更新到内存的缓存中,那不需要考虑太多,即使节点宕机了,重启后就会继续按原有频率继续执行定时任务,所以不需要考虑定时任

zhongzhh8的博客 1万+
上一篇: quartz - 有状态的Job
下一篇: quartz - springboot2.1.5 整合
Prometheus_xiao
博客等级 码龄9年 3粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值