Spring Cloud微服务搭建二、分布式定时任务Quartz+MySQL接入

目录

简介

简单使用

集群模式


传统的单体应用中,可以使用简单的定时任务框架,但在分布式环境下,需要确保定时任务不会重复执行。

简介

Quartz 是Java定时任务领域的开源框架,由OpenSymphony组织开发,支持复杂任务调度。核心组件包括:

  • Job‌:定义任务逻辑的接口
  • Trigger‌:控制执行时间的触发器
  • Scheduler‌:任务调度容器

支持Cron表达式和SpringBoot集成,

存储模式

RAMJobStore:内存存储,性能高但不支持集群

JDBCJobStore:数据库存储,支持集群和持久化

复制代码
    <!-- Spring Boot Quartz -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-quartz</artifactId>
    </dependency>

简单使用

启动类注解

复制代码
@EnableScheduling

TestTask

复制代码
package com.core.demo.job;

import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

/**
 * ceshi
 *
 * @author admin
 * @date 2026/1/8 23:09
 */
@Component
public class TestTask {

    @Scheduled(cron = "0/5 * * * * ?") // 每5秒执行一次
    public void scheduledTask() {
        System.out.println("定时任务执行中...");
    }
}

集群模式

yml配置文件

复制代码
spring:
  quartz:
    # memory, jdbc
    job-store-type: jdbc
    jdbc:
      # always 每次启动都初始化脚本,
      # never 从来都不。
      initialize-schema: never
      # 初始化脚本, 与always合用,使用jar包内置的脚本,或者自己定义
#      schema:
#         - classpath: org/quartz/impl/jdbcjobstore/tables_mysql_innodb.sql
    properties:
      org:
        quartz:
          scheduler:
            instanceId: AUTO
            instanceName: Scheduler
          jobStore:
            class: org.quartz.impl.jdbcjobstore.JobStoreTX
            driverDelegateClass: org.quartz.impl.jdbcjobstore.StdJDBCDelegate
            # 表前缀
            tablePrefix: qrtz_
            # 启用集群模式,确保多个实例间任务调度的一致性
            isClustered: true
            # 集群检查间隔时间(单位:毫秒)
            clusterCheckinInterval: 20000
            useProperties: true
            # 引用Spring Boot自动配置的数据源:default
            dataSource: jobDb
          dataSource:
            jobDb:
              driver: com.mysql.cj.jdbc.Driver
              URL: jdbc:mysql://127.0.0.1:3306/yscloud?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&allowMultiQueries=true&useInformationSchema=true
              user: root
              password: 123456
              maxConnections: 10
              acquireIncrement: 1

在\org\quartz-scheduler\quartz\2.3.1\quartz-2.3.1.jar!\org\quartz\impl\jdbcjobstore 下有各种sql脚本,这里选择tables_mysql_innodb.sql

TestTask

复制代码
import lombok.extern.slf4j.Slf4j;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.springframework.stereotype.Component;

/**
 * ceshi
 *
 * @author admin
 * @date 2026/1/8 23:09
 */
@Component
@Slf4j
public class TestTask implements Job {

    @Override
    public void execute(JobExecutionContext context) {
        log.info("每日任务执行 - {}", System.currentTimeMillis());
    }
}

SchedulerConfig

复制代码
import com.core.demo.job.TestTask;
import org.quartz.*;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * @author admin
 * @date 2026/1/11 20:18
 */
@Configuration
public class SchedulerConfig {

    @Bean
    public JobDetail dailyJobDetail() {
        return JobBuilder.newJob(TestTask.class)
                .withIdentity("testTask", "default")
                .storeDurably(true)
                .build();
    }

    @Bean
    public Trigger dailyJobTrigger() {
        // 每5秒执行一次
        return TriggerBuilder.newTrigger()
                .forJob(dailyJobDetail())
                .withIdentity("dailyJobTrigger", "default")
                .withSchedule(CronScheduleBuilder.cronSchedule("0/5 * * * * ?"))
                .build();
    }
}
相关推荐
youngerwang20 分钟前
【软件系统架构案例分析每日深耕 Day 17】CBAM成本效益分析:微服务改造决策
微服务·系统架构·cbam·案例每日深耕·微服务改造
中议视控2 小时前
展厅可视化网络中央控制系统:支持双向反馈,可视化播控,回显,状态显示,反向控制电脑,声光电网络视讯设备统一管理
网络·分布式·信息可视化
2501_937860942 小时前
MySQL CRUD 增删改查
数据库·mysql
竹枝溪2 小时前
MySQL数据库零基础入门
数据库·sql·mysql·navicat·ddl·dml·dql
lsylalalala4 小时前
mysql-索引1
数据库·mysql
星期一研究室4 小时前
告别文档「图片灾难排版」!3大黄金法则,让你的文档从杂乱无章到杂志风🧩
微服务·产品·设计
2501_937860947 小时前
MySQL表的操作:创建、查看、修改、删除完整实战
android·数据库·mysql
奇特認10 小时前
mysql 集群技术 3.高可用之 MHA
数据库·mysql
AI产品测评官13 小时前
突破系统割裂困局:2026企业级AI招聘架构如何迈向“原生全流程”?
大数据·微服务·架构
Java成神之路-15 小时前
集群架构 vs 分布式微服务架构:核心区别通俗拆解
分布式·微服务·架构