• SpringBoot整合quartz实现定时任务


    目录

    一 java原生实现定时任务

    二 SpringBoot整合quartz实现定时任务

    1 导坐标

    2 bean继承QuartzJobBean

    3 配置类


    定时任务应用场景:年度报表、秒杀商品上架、缓存统计报告

    一 java原生实现定时任务

    1. package com.qing;
    2. import java.util.Timer;
    3. import java.util.TimerTask;
    4. class SpringbootQuartzApplicationTests {
    5. public static void main(String[] args) {
    6. Timer timer = new Timer();
    7. TimerTask timerTask = new TimerTask(){
    8. @Override
    9. public void run() {
    10. System.out.println("do job");
    11. }
    12. };
    13. //延迟5s,每隔1s执行一次任务
    14. timer.schedule(timerTask,5000,1000);
    15. }
    16. }

    二 SpringBoot整合quartz实现定时任务


    job:具体执行的工作
    jobDetail:与工作相关的设定
    trigger触发器: 某一个工作具体的触发规则
    scheduler调度器:把jobDetail和trigger绑定在一起


    scheduler调度器:把jobDetail和trigger绑定在一起 → trigger:绑定具体的工作明细 → jobDetail:绑定具体的工作 → job

    步骤

    1 导坐标

    1. <dependency>
    2. <groupId>org.springframework.boot</groupId>
    3. <artifactId>spring-boot-starter-quartz</artifactId>
    4. </dependency>


    2 bean继承QuartzJobBean

    → job

    1. package com.qing.quartz;
    2. import org.quartz.JobExecutionContext;
    3. import org.quartz.JobExecutionException;
    4. import org.springframework.scheduling.quartz.QuartzJobBean;
    5. public class Myquartz extends QuartzJobBean {
    6. //工作job
    7. @Override
    8. protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
    9. System.out.println("do quartz job");
    10. }
    11. }


    3 配置类

    → 执行周期、jobDetail、trigger触发器、scheduler调度器

    1. package com.qing.config;
    2. import com.qing.quartz.Myquartz;
    3. import org.quartz.*;
    4. import org.springframework.context.annotation.Bean;
    5. import org.springframework.context.annotation.Configuration;
    6. @Configuration
    7. public class QuartzConfig {
    8. JobDetail jobDetail = null;
    9. //工作明细
    10. @Bean
    11. public JobDetail printJobDetail(){
    12. //绑定具体的工作
    13. //storeDurably 是做持久化的
    14. jobDetail = JobBuilder.newJob(Myquartz.class).storeDurably().build();
    15. return jobDetail;
    16. }
    17. //触发器
    18. @Bean
    19. public Trigger printTrigger(){
    20. //cronSchedule(秒 分 时 日 月 星期)
    21. //cronSchedule("0 0 0 1 2 ?"):0点0分0秒2月1日星期?
    22. //cronSchedule("0 0 0 * * ?"):任意月日 即每天
    23. //cronSchedule("0 * * * * ?"):每天的任意整分钟执行
    24. //cronSchedule("0,15,30,45 * * * * ?"):每天的0,15,30,45秒运行这个工作
    25. //cronSchedule("0/5 * * * * ?"):从0秒开始每5s执行一次
    26. ScheduleBuilder schedBuilder = CronScheduleBuilder.cronSchedule("0/5 * * * * ?");
    27. //绑定对应的工作明细
    28. return TriggerBuilder.newTrigger().forJob(jobDetail).withSchedule(schedBuilder).build();
    29. }
    30. }

    启动项目

    quartz执行定时任务比较麻烦,请看这篇task执行定时任务

  • 相关阅读:
    zkSync2.0主网上线在即 先行了解各类zkEVM
    怎么有效地进行问卷发放?
    韩国突发:将批准比特币ETF
    C++ 无符号类型
    说透缓存一致性与内存屏障
    【Android】【实践】
    实现地址转换的硬件机构
    树状数组——一个简单的整数问题2
    QT中Shader类与多VAO、VBO的使用
    CesiumJS 2022^ 原理[3] 渲染原理之从 Entity 看 DataSource 架构 - 生成 Primitive 的过程
  • 原文地址:https://blog.csdn.net/m0_45877477/article/details/125564616