ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

集成quartz调度框架

2022-01-19 15:01:22  阅读:201  来源: 互联网

标签:集成 bin quartz NAME DEFAULT utf8 调度 COLLATE NULL


quartz定时器是做什么的

Quartz是一个任务调度框架,实现动态定时任务实现,比如你想在每天的12点删除一些日志信息等。或者想每隔1小时,备份一些动作片到云盘。

搭建框架

1. 基础环境配置

a. 创建数据库表

CREATE TABLE `QRTZ_LOCKS`
(
    `SCHED_NAME` varchar(120) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '',
    `LOCK_NAME`  varchar(40) CHARACTER SET utf8 COLLATE utf8_bin  NOT NULL DEFAULT '',
    PRIMARY KEY (`SCHED_NAME`, `LOCK_NAME`) USING BTREE
) ENGINE = InnoDB
  CHARACTER SET = utf8
  COLLATE = utf8_bin
  ROW_FORMAT = Compact;

CREATE TABLE `QRTZ_PAUSED_TRIGGER_GRPS`
(
    `SCHED_NAME`    varchar(120) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '',
    `TRIGGER_GROUP` varchar(190) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '',
    PRIMARY KEY (`SCHED_NAME`, `TRIGGER_GROUP`) USING BTREE
) ENGINE = InnoDB
  CHARACTER SET = utf8
  COLLATE = utf8_bin
  ROW_FORMAT = Compact;

CREATE TABLE `QRTZ_SCHEDULER_STATE`
(
    `SCHED_NAME`        varchar(120) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '',
    `INSTANCE_NAME`     varchar(190) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '',
    `LAST_CHECKIN_TIME` bigint(13)                                       NOT NULL,
    `CHECKIN_INTERVAL`  bigint(13)                                       NOT NULL,
    PRIMARY KEY (`SCHED_NAME`, `INSTANCE_NAME`) USING BTREE
) ENGINE = InnoDB
  CHARACTER SET = utf8
  COLLATE = utf8_bin
  ROW_FORMAT = Compact;


CREATE TABLE `QRTZ_CALENDARS`
(
    `SCHED_NAME`    varchar(120) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '',
    `CALENDAR_NAME` varchar(190) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '',
    `CALENDAR`      blob                                             NOT NULL,
    PRIMARY KEY (`SCHED_NAME`, `CALENDAR_NAME`) USING BTREE
) ENGINE = InnoDB
  CHARACTER SET = utf8
  COLLATE = utf8_bin
  ROW_FORMAT = Compact;

CREATE TABLE `QRTZ_JOB_DETAILS`
(
    `SCHED_NAME`        varchar(120) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '',
    `JOB_NAME`          varchar(190) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '',
    `JOB_GROUP`         varchar(190) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '',
    `DESCRIPTION`       varchar(250) CHARACTER SET utf8 COLLATE utf8_bin NULL     DEFAULT NULL,
    `JOB_CLASS_NAME`    varchar(250) CHARACTER SET utf8 COLLATE utf8_bin NULL     DEFAULT NULL,
    `IS_DURABLE`        varchar(1) CHARACTER SET utf8 COLLATE utf8_bin   NULL     DEFAULT NULL,
    `IS_NONCONCURRENT`  varchar(1) CHARACTER SET utf8 COLLATE utf8_bin   NULL     DEFAULT NULL,
    `IS_UPDATE_DATA`    varchar(1) CHARACTER SET utf8 COLLATE utf8_bin   NULL     DEFAULT NULL,
    `REQUESTS_RECOVERY` varchar(1) CHARACTER SET utf8 COLLATE utf8_bin   NULL     DEFAULT NULL,
    `JOB_DATA`          blob                                             NULL,
    PRIMARY KEY (`SCHED_NAME`, `JOB_NAME`, `JOB_GROUP`) USING BTREE,
    INDEX `IDX_QRTZ_J_REQ_RECOVERY` (`SCHED_NAME`, `REQUESTS_RECOVERY`) USING BTREE,
    INDEX `IDX_QRTZ_J_GRP` (`SCHED_NAME`, `JOB_GROUP`) USING BTREE
) ENGINE = InnoDB
  CHARACTER SET = utf8
  COLLATE = utf8_bin
  ROW_FORMAT = Compact;


CREATE TABLE `QRTZ_TRIGGERS`
(
    `SCHED_NAME`     varchar(120) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '',
    `TRIGGER_NAME`   varchar(190) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '',
    `TRIGGER_GROUP`  varchar(190) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '',
    `JOB_NAME`       varchar(190) CHARACTER SET utf8 COLLATE utf8_bin NULL     DEFAULT NULL,
    `JOB_GROUP`      varchar(190) CHARACTER SET utf8 COLLATE utf8_bin NULL     DEFAULT NULL,
    `DESCRIPTION`    varchar(250) CHARACTER SET utf8 COLLATE utf8_bin NULL     DEFAULT NULL,
    `NEXT_FIRE_TIME` bigint(13)                                       NULL     DEFAULT NULL,
    `PREV_FIRE_TIME` bigint(13)                                       NULL     DEFAULT NULL,
    `PRIORITY`       int(11)                                          NULL     DEFAULT NULL,
    `TRIGGER_STATE`  varchar(16) CHARACTER SET utf8 COLLATE utf8_bin  NULL     DEFAULT NULL,
    `TRIGGER_TYPE`   varchar(8) CHARACTER SET utf8 COLLATE utf8_bin   NULL     DEFAULT NULL,
    `START_TIME`     bigint(13)                                       NOT NULL,
    `END_TIME`       bigint(13)                                       NULL     DEFAULT NULL,
    `CALENDAR_NAME`  varchar(190) CHARACTER SET utf8 COLLATE utf8_bin NULL     DEFAULT NULL,
    `MISFIRE_INSTR`  smallint(2)                                      NULL     DEFAULT NULL,
    `JOB_DATA`       blob                                             NULL,
    PRIMARY KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) USING BTREE,
    INDEX `IDX_QRTZ_T_J` (`SCHED_NAME`, `JOB_NAME`, `JOB_GROUP`) USING BTREE,
    INDEX `IDX_QRTZ_T_JG` (`SCHED_NAME`, `JOB_GROUP`) USING BTREE,
    INDEX `IDX_QRTZ_T_C` (`SCHED_NAME`, `CALENDAR_NAME`) USING BTREE,
    INDEX `IDX_QRTZ_T_G` (`SCHED_NAME`, `TRIGGER_GROUP`) USING BTREE,
    INDEX `IDX_QRTZ_T_STATE` (`SCHED_NAME`, `TRIGGER_STATE`) USING BTREE,
    INDEX `IDX_QRTZ_T_N_STATE` (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`, `TRIGGER_STATE`) USING BTREE,
    INDEX `IDX_QRTZ_T_N_G_STATE` (`SCHED_NAME`, `TRIGGER_GROUP`, `TRIGGER_STATE`) USING BTREE,
    INDEX `IDX_QRTZ_T_NEXT_FIRE_TIME` (`SCHED_NAME`, `NEXT_FIRE_TIME`) USING BTREE,
    INDEX `IDX_QRTZ_T_NFT_ST` (`SCHED_NAME`, `TRIGGER_STATE`, `NEXT_FIRE_TIME`) USING BTREE,
    INDEX `IDX_QRTZ_T_NFT_MISFIRE` (`SCHED_NAME`, `MISFIRE_INSTR`, `NEXT_FIRE_TIME`) USING BTREE,
    INDEX `IDX_QRTZ_T_NFT_ST_MISFIRE` (`SCHED_NAME`, `MISFIRE_INSTR`, `NEXT_FIRE_TIME`, `TRIGGER_STATE`) USING BTREE,
    INDEX `IDX_QRTZ_T_NFT_ST_MISFIRE_GRP` (`SCHED_NAME`, `MISFIRE_INSTR`, `NEXT_FIRE_TIME`, `TRIGGER_GROUP`,
                                           `TRIGGER_STATE`) USING BTREE,
    CONSTRAINT `QRTZ_TRIGGERS_ibfk_1` FOREIGN KEY (`SCHED_NAME`, `JOB_NAME`, `JOB_GROUP`) REFERENCES `QRTZ_JOB_DETAILS` (`SCHED_NAME`, `JOB_NAME`, `JOB_GROUP`) ON DELETE RESTRICT ON UPDATE RESTRICT
) ENGINE = InnoDB
  CHARACTER SET = utf8
  COLLATE = utf8_bin
  ROW_FORMAT = Compact;


CREATE TABLE `QRTZ_BLOB_TRIGGERS`
(
    `SCHED_NAME`    varchar(120) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '',
    `TRIGGER_NAME`  varchar(190) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '',
    `TRIGGER_GROUP` varchar(190) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '',
    `BLOB_DATA`     blob                                             NULL,
    PRIMARY KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) USING BTREE,
    INDEX `SCHED_NAME` (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) USING BTREE,
    CONSTRAINT `QRTZ_BLOB_TRIGGERS_ibfk_1` FOREIGN KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) REFERENCES `QRTZ_TRIGGERS` (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) ON DELETE RESTRICT ON UPDATE RESTRICT
) ENGINE = InnoDB
  CHARACTER SET = utf8
  COLLATE = utf8_bin
  ROW_FORMAT = Compact;



CREATE TABLE `QRTZ_FIRED_TRIGGERS`
(
    `SCHED_NAME`        varchar(120) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '',
    `ENTRY_ID`          varchar(95) CHARACTER SET utf8 COLLATE utf8_bin  NOT NULL DEFAULT '',
    `TRIGGER_NAME`      varchar(190) CHARACTER SET utf8 COLLATE utf8_bin NULL     DEFAULT NULL,
    `TRIGGER_GROUP`     varchar(190) CHARACTER SET utf8 COLLATE utf8_bin NULL     DEFAULT NULL,
    `INSTANCE_NAME`     varchar(190) CHARACTER SET utf8 COLLATE utf8_bin NULL     DEFAULT NULL,
    `FIRED_TIME`        bigint(13)                                       NOT NULL,
    `SCHED_TIME`        bigint(13)                                       NOT NULL,
    `PRIORITY`          int(11)                                          NOT NULL,
    `STATE`             varchar(16) CHARACTER SET utf8 COLLATE utf8_bin  NULL     DEFAULT NULL,
    `JOB_NAME`          varchar(190) CHARACTER SET utf8 COLLATE utf8_bin NULL     DEFAULT NULL,
    `JOB_GROUP`         varchar(190) CHARACTER SET utf8 COLLATE utf8_bin NULL     DEFAULT NULL,
    `IS_NONCONCURRENT`  varchar(1) CHARACTER SET utf8 COLLATE utf8_bin   NULL     DEFAULT NULL,
    `REQUESTS_RECOVERY` varchar(1) CHARACTER SET utf8 COLLATE utf8_bin   NULL     DEFAULT NULL,
    PRIMARY KEY (`SCHED_NAME`, `ENTRY_ID`) USING BTREE,
    INDEX `IDX_QRTZ_FT_TRIG_INST_NAME` (`SCHED_NAME`, `INSTANCE_NAME`) USING BTREE,
    INDEX `IDX_QRTZ_FT_INST_JOB_REQ_RCVRY` (`SCHED_NAME`, `INSTANCE_NAME`, `REQUESTS_RECOVERY`) USING BTREE,
    INDEX `IDX_QRTZ_FT_J_G` (`SCHED_NAME`, `JOB_NAME`, `JOB_GROUP`) USING BTREE,
    INDEX `IDX_QRTZ_FT_JG` (`SCHED_NAME`, `JOB_GROUP`) USING BTREE,
    INDEX `IDX_QRTZ_FT_T_G` (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) USING BTREE,
    INDEX `IDX_QRTZ_FT_TG` (`SCHED_NAME`, `TRIGGER_GROUP`) USING BTREE
) ENGINE = InnoDB
  CHARACTER SET = utf8
  COLLATE = utf8_bin
  ROW_FORMAT = Compact;


CREATE TABLE `QRTZ_SIMPROP_TRIGGERS`
(
    `SCHED_NAME`    varchar(120) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '',
    `TRIGGER_NAME`  varchar(190) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '',
    `TRIGGER_GROUP` varchar(190) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '',
    `STR_PROP_1`    varchar(512) CHARACTER SET utf8 COLLATE utf8_bin NULL     DEFAULT NULL,
    `STR_PROP_2`    varchar(512) CHARACTER SET utf8 COLLATE utf8_bin NULL     DEFAULT NULL,
    `STR_PROP_3`    varchar(512) CHARACTER SET utf8 COLLATE utf8_bin NULL     DEFAULT NULL,
    `INT_PROP_1`    int(11)                                          NULL     DEFAULT NULL,
    `INT_PROP_2`    int(11)                                          NULL     DEFAULT NULL,
    `LONG_PROP_1`   bigint(20)                                       NULL     DEFAULT NULL,
    `LONG_PROP_2`   bigint(20)                                       NULL     DEFAULT NULL,
    `DEC_PROP_1`    decimal(13, 4)                                   NULL     DEFAULT NULL,
    `DEC_PROP_2`    decimal(13, 4)                                   NULL     DEFAULT NULL,
    `BOOL_PROP_1`   varchar(1) CHARACTER SET utf8 COLLATE utf8_bin   NULL     DEFAULT NULL,
    `BOOL_PROP_2`   varchar(1) CHARACTER SET utf8 COLLATE utf8_bin   NULL     DEFAULT NULL,
    PRIMARY KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) USING BTREE,
    CONSTRAINT `QRTZ_SIMPROP_TRIGGERS_ibfk_1` FOREIGN KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) REFERENCES `QRTZ_TRIGGERS` (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) ON DELETE RESTRICT ON UPDATE RESTRICT
) ENGINE = InnoDB
  CHARACTER SET = utf8
  COLLATE = utf8_bin
  ROW_FORMAT = Compact;

CREATE TABLE `QRTZ_CRON_TRIGGERS`
(
    `SCHED_NAME`      varchar(120) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '',
    `TRIGGER_NAME`    varchar(190) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '',
    `TRIGGER_GROUP`   varchar(190) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '',
    `CRON_EXPRESSION` varchar(120) CHARACTER SET utf8 COLLATE utf8_bin NULL     DEFAULT NULL,
    `TIME_ZONE_ID`    varchar(80) CHARACTER SET utf8 COLLATE utf8_bin  NULL     DEFAULT NULL,
    PRIMARY KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) USING BTREE,
    CONSTRAINT `QRTZ_CRON_TRIGGERS_ibfk_1` FOREIGN KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) REFERENCES `QRTZ_TRIGGERS` (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) ON DELETE RESTRICT ON UPDATE RESTRICT
) ENGINE = InnoDB
  CHARACTER SET = utf8
  COLLATE = utf8_bin
  ROW_FORMAT = Compact;

CREATE TABLE `QRTZ_SIMPLE_TRIGGERS`
(
    `SCHED_NAME`      varchar(120) COLLATE utf8_bin NOT NULL,
    `TRIGGER_NAME`    varchar(190) COLLATE utf8_bin NOT NULL,
    `TRIGGER_GROUP`   varchar(190) COLLATE utf8_bin NOT NULL,
    `REPEAT_COUNT`    bigint(7)                     NOT NULL,
    `REPEAT_INTERVAL` bigint(12)                    NOT NULL,
    `TIMES_TRIGGERED` bigint(10)                    NOT NULL,
    PRIMARY KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) USING BTREE,
    CONSTRAINT `QRTZ_SIMPLE_TRIGGERS_ibfk_1` FOREIGN KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) REFERENCES `QRTZ_TRIGGERS` (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`)
) ENGINE = InnoDB
  DEFAULT CHARSET = utf8
  COLLATE = utf8_bin;

b.导入pom依赖

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-quartz</artifactId>
        </dependency>

c.填写quartz配置文件

spring:
  application:
    name: xxx
  profiles:
    include: datasource,xxx
  quartz:
    #相关属性配置
    properties:
      org:
        quartz:
          scheduler:
            instanceName: clusteredScheduler
            instanceId: AUTO
          jobStore:
            class: org.quartz.impl.jdbcjobstore.JobStoreTX
            driverDelegateClass: org.quartz.impl.jdbcjobstore.StdJDBCDelegate
            tablePrefix: QRTZ_
            isClustered: true
            clusterCheckinInterval: 10000
            useProperties: true
          threadPool:
            class: org.quartz.simpl.SimpleThreadPool
            threadCount: 10
            threadPriority: 5
            threadsInheritContextClassLoaderOfInitializingThread: true
    #数据库方式
    job-store-type: jdbc
    #初始化表结构
    jdbc:
      initialize-schema: EMBEDDED

2.测试代码

@Configuration //打开注释,启用定时器
public class TestQuartzTask extends QuartzJobBean {
    private Logger logger = LoggerFactory.getLogger(TestQuartzTask.class);

    @Override
    protected void executeInternal(JobExecutionContext jobExecutionContext) throws JobExecutionException {
        logger.info("定时任务执行了。。。{}");
    }

    @Bean
    public JobDetail testQuartzTaskJobDetail() {
        return JobBuilder.newJob(TestQuartzTask.class)
                .withIdentity("testQuartzTask")
                .storeDurably().build();
    }

    @Bean
    public Trigger testQuartzTaskTrigger() throws SchedulerException {
        //每隔一分钟执行一次任务
        CronScheduleBuilder scheduleBuilder = CronScheduleBuilder.cronSchedule("0 0/1 * * * ? *");
        return TriggerBuilder.newTrigger().forJob(testQuartzTaskJobDetail())
                .withIdentity("testQuartzTask")
                .withSchedule(scheduleBuilder)
                .build();
    }
}

3.quartz表相关介绍

QRTZ_CALENDARS 以 Blob 类型存储 Quartz 的 Calendar 信息

QRTZ_CRON_TRIGGERS 存储 Cron Trigger,包括Cron表达式和时区信息

QRTZ_FIRED_TRIGGERS 存储与已触发的 Trigger 相关的状态信息,以及相联 Job的执行信息QRTZ_PAUSED_TRIGGER_GRPS 存储已暂停的 Trigger组的信息

QRTZ_SCHEDULER_STATE 存储少量的有关 Scheduler 的状态信息,和别的Scheduler实例(假如是用于一个集群中)

QRTZ_LOCKS 存储程序的悲观锁的信息(假如使用了悲观锁)

QRTZ_JOB_DETAILS 存储每一个已配置的 Job 的详细信息

QRTZ_JOB_LISTENERS 存储有关已配置的 JobListener的信息

QRTZ_SIMPLE_TRIGGERS存储简单的Trigger,包括重复次数,间隔,以及已触的次数

QRTZ_BLOG_TRIGGERS Trigger 作为 Blob 类型存储(用于 Quartz 用户用JDBC创建他们自己定制的 Trigger 类型,JobStore并不知道如何存储实例的时候)

QRTZ_TRIGGER_LISTENERS 存储已配置的 TriggerListener的信息

QRTZ_TRIGGERS 存储已配置的 Trigger 的信息

标签:集成,bin,quartz,NAME,DEFAULT,utf8,调度,COLLATE,NULL
来源: https://blog.csdn.net/qq_43586088/article/details/122580670

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有