栏目分类:
子分类:
返回
文库吧用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
文库吧 > IT > 软件开发 > 后端开发 > Java

问题记录,SpringBoot整合Quarzt时Cron表达式不生效问题

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

问题记录,SpringBoot整合Quarzt时Cron表达式不生效问题

在做一个定时任务管理,要求动态定时任务,前端修改Cron表达式后即可生效,比如从 每10执行一次(0/15 * * * * ?)改为每一分钟执行一次(* 0/1 * * * ?),并非硬编码方式使用注解@Scheduled 的方式,此方法不灵活修改时间改代码很不方便

于是 SpringBoot整合Quarzt,前面也有写过一篇

但是版本发布之后,发现时间不论设置什么 都会每秒执行一次,很郁闷,各种原因排查

引入jar问题,并不是,重新review 代码发现也没有什么问题;

难道是少了配置

#  ## quartz定时任务,采用数据库方式
#  quartz:
#    job-store-type: jdbc
#    initialize-schema: embedded
#    #设置自动启动,默认为 true
#    auto-startup: true
#    #启动时更新己存在的Job
#    overwrite-existing-jobs: true
#    properties:
#      org:
#        quartz:
#          scheduler:
#            instanceName: MyScheduler
#            instanceId: AUTO
#          jobStore:
#            class: org.quartz.impl.jdbcjobstore.JobStoreTX
#            driverDelegateClass: org.quartz.impl.jdbcjobstore.StdJDBCDelegate
#            tablePrefix: QRTZ_
#            isClustered: true
#            misfireThreshold: 60000
#            clusterCheckinInterval: 10000
#          threadPool:
#            class: org.quartz.simpl.SimpleThreadPool
#            threadCount: 10
#            threadPriority: 5
#            threadsInheritContextClassLoaderOfInitializingThread: true
启动项目发现少了几张表 "QRTZ_LOCKS" dones't exist

于是导入quartz相关的表

下载地址:
https://www.quartz-scheduler.org/downloads/files/quartz-2.2.3-distribution.tar.gz
DROP TABLE IF EXISTS QRTZ_FIRED_TRIGGERS;
DROP TABLE IF EXISTS QRTZ_PAUSED_TRIGGER_GRPS;
DROP TABLE IF EXISTS QRTZ_SCHEDULER_STATE;
DROP TABLE IF EXISTS QRTZ_LOCKS;
DROP TABLE IF EXISTS QRTZ_SIMPLE_TRIGGERS;
DROP TABLE IF EXISTS QRTZ_SIMPROP_TRIGGERS;
DROP TABLE IF EXISTS QRTZ_CRON_TRIGGERS;
DROP TABLE IF EXISTS QRTZ_BLOB_TRIGGERS;
DROP TABLE IF EXISTS QRTZ_TRIGGERS;
DROP TABLE IF EXISTS QRTZ_JOB_DETAILS;
DROP TABLE IF EXISTS QRTZ_CALENDARS;
 
 
CREATE TABLE QRTZ_JOB_DETAILS
  (
    SCHED_NAME VARCHAr(120) NOT NULL,
    JOB_NAME  VARCHAr(200) NOT NULL,
    JOB_GROUP VARCHAr(200) NOT NULL,
    DESCRIPTION VARCHAr(250) NULL,
    JOB_CLASS_NAME   VARCHAr(250) NOT NULL,
    IS_DURABLE VARCHAr(1) NOT NULL,
    IS_NONCONCURRENT VARCHAr(1) NOT NULL,
    IS_UPDATE_DATA VARCHAr(1) NOT NULL,
    REQUESTS_RECOVERY VARCHAr(1) NOT NULL,
    JOB_DATA BLOB NULL,
    PRIMARY KEY (SCHED_NAME,JOB_NAME,JOB_GROUP)
);
 
 
CREATE TABLE QRTZ_TRIGGERS
  (
    SCHED_NAME VARCHAr(120) NOT NULL,
    TRIGGER_NAME VARCHAr(200) NOT NULL,
    TRIGGER_GROUP VARCHAr(200) NOT NULL,
    JOB_NAME  VARCHAr(200) NOT NULL,
    JOB_GROUP VARCHAr(200) NOT NULL,
    DESCRIPTION VARCHAr(250) NULL,
    NEXT_FIRE_TIME BIGINT(13) NULL,
    PREV_FIRE_TIME BIGINT(13) NULL,
    PRIORITY INTEGER NULL,
    TRIGGER_STATE VARCHAr(16) NOT NULL,
    TRIGGER_TYPE VARCHAr(8) NOT NULL,
    START_TIME BIGINT(13) NOT NULL,
    END_TIME BIGINT(13) NULL,
    CALENDAR_NAME VARCHAr(200) NULL,
    MISFIRE_INSTR SMALLINT(2) NULL,
    JOB_DATA BLOB NULL,
    PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP),
    FOREIGN KEY (SCHED_NAME,JOB_NAME,JOB_GROUP)
        REFERENCES QRTZ_JOB_DETAILS(SCHED_NAME,JOB_NAME,JOB_GROUP)
);
 
 
CREATE TABLE QRTZ_SIMPLE_TRIGGERS
  (
    SCHED_NAME VARCHAr(120) NOT NULL,
    TRIGGER_NAME VARCHAr(200) NOT NULL,
    TRIGGER_GROUP VARCHAr(200) 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),
    FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)
        REFERENCES QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)
);
 
 
CREATE TABLE QRTZ_CRON_TRIGGERS
  (
    SCHED_NAME VARCHAr(120) NOT NULL,
    TRIGGER_NAME VARCHAr(200) NOT NULL,
    TRIGGER_GROUP VARCHAr(200) NOT NULL,
    CRON_EXPRESSION VARCHAr(200) NOT NULL,
    TIME_ZONE_ID VARCHAr(80),
    PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP),
    FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)
        REFERENCES QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)
);
 
 
CREATE TABLE QRTZ_SIMPROP_TRIGGERS
  (          
    SCHED_NAME VARCHAr(120) NOT NULL,
    TRIGGER_NAME VARCHAr(200) NOT NULL,
    TRIGGER_GROUP VARCHAr(200) NOT NULL,
    STR_PROP_1 VARCHAr(512) NULL,
    STR_PROP_2 VARCHAr(512) NULL,
    STR_PROP_3 VARCHAr(512) NULL,
    INT_PROP_1 INT NULL,
    INT_PROP_2 INT NULL,
    LONG_PROP_1 BIGINT NULL,
    LONG_PROP_2 BIGINT NULL,
    DEC_PROP_1 NUMERIC(13,4) NULL,
    DEC_PROP_2 NUMERIC(13,4) NULL,
    BOOL_PROP_1 VARCHAr(1) NULL,
    BOOL_PROP_2 VARCHAr(1) NULL,
    PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP),
    FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) 
    REFERENCES QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)
);
 
 
CREATE TABLE QRTZ_BLOB_TRIGGERS
  (
    SCHED_NAME VARCHAr(120) NOT NULL,
    TRIGGER_NAME VARCHAr(200) NOT NULL,
    TRIGGER_GROUP VARCHAr(200) NOT NULL,
    BLOB_DATA BLOB NULL,
    PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP),
    FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)
        REFERENCES QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)
);
 
 
CREATE TABLE QRTZ_CALENDARS
  (
    SCHED_NAME VARCHAr(120) NOT NULL,
    CALENDAR_NAME  VARCHAr(200) NOT NULL,
    CALENDAR BLOB NOT NULL,
    PRIMARY KEY (SCHED_NAME,CALENDAR_NAME)
);
 
 
CREATE TABLE QRTZ_PAUSED_TRIGGER_GRPS
  (
    SCHED_NAME VARCHAr(120) NOT NULL,
    TRIGGER_GROUP  VARCHAr(200) NOT NULL, 
    PRIMARY KEY (SCHED_NAME,TRIGGER_GROUP)
);
 
 
CREATE TABLE QRTZ_FIRED_TRIGGERS
  (
    SCHED_NAME VARCHAr(120) NOT NULL,
    ENTRY_ID VARCHAr(95) NOT NULL,
    TRIGGER_NAME VARCHAr(200) NOT NULL,
    TRIGGER_GROUP VARCHAr(200) NOT NULL,
    INSTANCE_NAME VARCHAr(200) NOT NULL,
    FIRED_TIME BIGINT(13) NOT NULL,
    SCHED_TIME BIGINT(13) NOT NULL,
    PRIORITY INTEGER NOT NULL,
    STATE VARCHAr(16) NOT NULL,
    JOB_NAME VARCHAr(200) NULL,
    JOB_GROUP VARCHAr(200) NULL,
    IS_NONCONCURRENT VARCHAr(1) NULL,
    REQUESTS_RECOVERY VARCHAr(1) NULL,
    PRIMARY KEY (SCHED_NAME,ENTRY_ID)
);
 
 
CREATE TABLE QRTZ_SCHEDULER_STATE
  (
    SCHED_NAME VARCHAr(120) NOT NULL,
    INSTANCE_NAME VARCHAr(200) NOT NULL,
    LAST_CHECKIN_TIME BIGINT(13) NOT NULL,
    CHECKIN_INTERVAL BIGINT(13) NOT NULL,
    PRIMARY KEY (SCHED_NAME,INSTANCE_NAME)
);
 
 
CREATE TABLE QRTZ_LOCKS
  (
    SCHED_NAME VARCHAr(120) NOT NULL,
    LOCK_NAME  VARCHAr(40) NOT NULL, 
    PRIMARY KEY (SCHED_NAME,LOCK_NAME)
);
 
 
commit;

 启动项目又发现新的问题

Couldn't store job: Unable to serialize JobDataMap for insertion into database because the value of property
于是百度了下,最终找到了一个类似的如下,文章很早之前的了

尝试着实体类是实现了 序列化接口 Serializable  再次启动居然成功了

 

 

最后删去配置文件和注释掉配置类,把导入的几张表也删除也是成功运行

总结 最终实现Serializable 接口

转载请注明:文章转载自 www.wk8.com.cn
本文地址:https://www.wk8.com.cn/it/1036701.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 wk8.com.cn

ICP备案号:晋ICP备2021003244-6号