Quartz运行原理

2025-08-08  本文已影响0人  boyiis
image.png

cron表达式

表达式格式(7个字段):秒 分 时 日 月 星期几 年, 例如:0 0 13 25 1 ? 2025

特殊符号

Scheduler调度器常用API


实现动态调度的定时任务

MyJob implements Job
void execute(JobExecutionContext context)
JobBean
String jobName
string jobclass
String cronExpression
JobUtil
static void createJob(Scheduler scheduler, JobBean jobBean)
static void pauseJob(Scheduler scheduler, String jobName)
static void resumeJob(Scheduler scheduler, String jobName)
static void deleteJob(Scheduler scheduler, String  jobName)
static void runJobOnce(Scheduler scheduler, String jobName)
static void modifyJob(Scheduler scheduler, JobBean jobBean)
QuartzController
String createJob()
String pauseJob()
String resumeJob()
String deleteJob()
String runJobOnce()
String modifyJob()

定时任务misfire机制

  1. 什么是misfire
    1.1. 定时任务被触发了称为 fire ,那么 misfire 自然就称之为"错过的触发"
    1.2. 误解:失火、哑火

  2. 为什么出现misfire
    2.1. 资源紧张,定时任务请求不到对应的线程
    2.2. 调度器关闭
    2.3. 设置定时任务的开始时间早于启动时间(未明确指定开始时间,则开始时间=启动时间)

  3. misfire的补偿
    3.1.不同的trigger,存在不同的补偿策略说明:本文针对CronTrigger讲解,SimpleTrigger的内容请自行查阅资料
    3.2. 补偿策略
    withMisfireHandlingInstructionDoNothing()
    说明:错过的不再补偿,然后正常调度
    withMisfireHandlingInstructionFireAndProceed()
    说明:错过的全部合并成一次,并立即补偿(即使任务终止时间已达到),然后正常调度。默认值
    withMisfireHandlingInstructionIgnoreMisfires()
    说明:错过的全部立即补偿(即使任务终止时间已达到),然后正常调度


上一篇 下一篇

猜你喜欢

热点阅读