Quartz CronTrigger用法

CronTrigger 是 Quartz Scheduler 中的一种触发器,它使用 Cron 表达式来定义复杂的调度计划。Cron 表达式允许你定义基于特定时间表的任务调度,例如每天的某个时间、每周的某几天等。下面是关于 CronTrigger 的基本用法说明。

1. Cron 表达式基本结构

Cron 表达式由六或七个空格分隔的字段组成,每个字段代表一个时间单位:

秒(0-59)
分钟(0-59)
小时(0-23)
日期(1-31)
月份(1-12 或 JAN-DEC)
星期(0-6 或 SUN-SAT)
年(可选,1970-2099)

2. 创建 CronTrigger

要创建一个 CronTrigger,可以使用 CronScheduleBuilder 来配置 Cron 表达式。以下是创建一个 CronTrigger 的基本步骤:

import org.quartz.CronScheduleBuilder;
import org.quartz.CronTrigger;
import org.quartz.Trigger;
import org.quartz.TriggerBuilder;

CronTrigger trigger = TriggerBuilder.newTrigger()
    .withIdentity("triggerName", "triggerGroup")
    .withSchedule(CronScheduleBuilder.cronSchedule("0 0 12 * * ?")) // 每天中午12点
    .build();

3. Cron 表达式示例

  • 每天中午12点:

    "0 0 12 * * ?"
    
    • 秒:0
    • 分钟:0
    • 小时:12
    • 日期:每一天
    • 月份:每个月
    • 星期:任何一天
  • 每周一上午10点:

    "0 0 10 ? * MON"
    
    • 秒:0
    • 分钟:0
    • 小时:10
    • 日期:不指定
    • 月份:每个月
    • 星期:周一
  • 每月1号和15号凌晨1点:

    "0 0 1 1,15 * ?"
    
    • 秒:0
    • 分钟:0
    • 小时:1
    • 日期:1号和15号
    • 月份:每个月
    • 星期:不指定

4. 示例:创建和注册 Job 和 CronTrigger

下面是一个完整的示例,演示如何创建和注册一个 CronTrigger,以及关联一个 Job

import org.quartz.CronScheduleBuilder;
import org.quartz.CronTrigger;
import org.quartz.JobBuilder;
import org.quartz.JobDetail;
import org.quartz.Trigger;
import org.quartz.TriggerBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class QuartzConfig {

    @Bean
    public JobDetail jobDetail() {
        return JobBuilder.newJob(MyJob.class)
                .withIdentity("myJob")
                .storeDurably() // 持久化
                .build();
    }

    @Bean
    public Trigger cronTrigger(JobDetail jobDetail) {
        return TriggerBuilder.newTrigger()
                .forJob(jobDetail)
                .withIdentity("myCronTrigger")
                .withSchedule(CronScheduleBuilder.cronSchedule("0 0 12 * * ?")) // 每天中午12点
                .build();
    }
}

5. CronTrigger 的高级用法

  • 使用多个表达式:
    Cron 表达式支持使用逗号分隔多个值,例如 "0 0 10,15 * * ?" 将任务安排在每天的10点和15点。

  • 使用范围:
    使用短横线定义范围,例如 "0 0 10-12 * * ?" 将任务安排在每天的10点到12点每小时执行一次。

  • 使用步长:
    使用斜杠定义步长,例如 "0 0/15 9-17 * * ?" 将任务安排在每天9点到17点之间每15分钟执行一次。

6. 触发器持久化

SimpleTrigger 一样,如果希望 CronTrigger 的调度信息持久化,可以在配置文件中设置 job-store 类型为 jdbc。具体配置可以参考 Quartz 官方文档或 Spring Boot 提供的自动配置。

7. 注意事项

  • Cron 表达式中的 ? 表示不指定某个字段的值,适用于日期和星期字段。
  • Cron 表达式的有效范围和详细语法可以参考 Quartz 官方文档或 Cron 表达式在线工具进行测试。

希望这些说明能帮助你更好地理解和使用 CronTrigger!如果有更多问题或需要进一步的帮助,请告诉我。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值