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


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

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

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

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

    难道是少了配置

    1. # ## quartz定时任务,采用数据库方式
    2. # quartz:
    3. # job-store-type: jdbc
    4. # initialize-schema: embedded
    5. # #设置自动启动,默认为 true
    6. # auto-startup: true
    7. # #启动时更新己存在的Job
    8. # overwrite-existing-jobs: true
    9. # properties:
    10. # org:
    11. # quartz:
    12. # scheduler:
    13. # instanceName: MyScheduler
    14. # instanceId: AUTO
    15. # jobStore:
    16. # class: org.quartz.impl.jdbcjobstore.JobStoreTX
    17. # driverDelegateClass: org.quartz.impl.jdbcjobstore.StdJDBCDelegate
    18. # tablePrefix: QRTZ_
    19. # isClustered: true
    20. # misfireThreshold: 60000
    21. # clusterCheckinInterval: 10000
    22. # threadPool:
    23. # class: org.quartz.simpl.SimpleThreadPool
    24. # threadCount: 10
    25. # threadPriority: 5
    26. # threadsInheritContextClassLoaderOfInitializingThread: true
    启动项目发现少了几张表 "QRTZ_LOCKS" dones't exist

    于是导入quartz相关的表

    1. 下载地址:
    2. https://www.quartz-scheduler.org/downloads/files/quartz-2.2.3-distribution.tar.gz
    1. DROP TABLE IF EXISTS QRTZ_FIRED_TRIGGERS;
    2. DROP TABLE IF EXISTS QRTZ_PAUSED_TRIGGER_GRPS;
    3. DROP TABLE IF EXISTS QRTZ_SCHEDULER_STATE;
    4. DROP TABLE IF EXISTS QRTZ_LOCKS;
    5. DROP TABLE IF EXISTS QRTZ_SIMPLE_TRIGGERS;
    6. DROP TABLE IF EXISTS QRTZ_SIMPROP_TRIGGERS;
    7. DROP TABLE IF EXISTS QRTZ_CRON_TRIGGERS;
    8. DROP TABLE IF EXISTS QRTZ_BLOB_TRIGGERS;
    9. DROP TABLE IF EXISTS QRTZ_TRIGGERS;
    10. DROP TABLE IF EXISTS QRTZ_JOB_DETAILS;
    11. DROP TABLE IF EXISTS QRTZ_CALENDARS;
    12. CREATE TABLE QRTZ_JOB_DETAILS
    13. (
    14. SCHED_NAME VARCHAR(120) NOT NULL,
    15. JOB_NAME VARCHAR(200) NOT NULL,
    16. JOB_GROUP VARCHAR(200) NOT NULL,
    17. DESCRIPTION VARCHAR(250) NULL,
    18. JOB_CLASS_NAME VARCHAR(250) NOT NULL,
    19. IS_DURABLE VARCHAR(1) NOT NULL,
    20. IS_NONCONCURRENT VARCHAR(1) NOT NULL,
    21. IS_UPDATE_DATA VARCHAR(1) NOT NULL,
    22. REQUESTS_RECOVERY VARCHAR(1) NOT NULL,
    23. JOB_DATA BLOB NULL,
    24. PRIMARY KEY (SCHED_NAME,JOB_NAME,JOB_GROUP)
    25. );
    26. CREATE TABLE QRTZ_TRIGGERS
    27. (
    28. SCHED_NAME VARCHAR(120) NOT NULL,
    29. TRIGGER_NAME VARCHAR(200) NOT NULL,
    30. TRIGGER_GROUP VARCHAR(200) NOT NULL,
    31. JOB_NAME VARCHAR(200) NOT NULL,
    32. JOB_GROUP VARCHAR(200) NOT NULL,
    33. DESCRIPTION VARCHAR(250) NULL,
    34. NEXT_FIRE_TIME BIGINT(13) NULL,
    35. PREV_FIRE_TIME BIGINT(13) NULL,
    36. PRIORITY INTEGER NULL,
    37. TRIGGER_STATE VARCHAR(16) NOT NULL,
    38. TRIGGER_TYPE VARCHAR(8) NOT NULL,
    39. START_TIME BIGINT(13) NOT NULL,
    40. END_TIME BIGINT(13) NULL,
    41. CALENDAR_NAME VARCHAR(200) NULL,
    42. MISFIRE_INSTR SMALLINT(2) NULL,
    43. JOB_DATA BLOB NULL,
    44. PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP),
    45. FOREIGN KEY (SCHED_NAME,JOB_NAME,JOB_GROUP)
    46. REFERENCES QRTZ_JOB_DETAILS(SCHED_NAME,JOB_NAME,JOB_GROUP)
    47. );
    48. CREATE TABLE QRTZ_SIMPLE_TRIGGERS
    49. (
    50. SCHED_NAME VARCHAR(120) NOT NULL,
    51. TRIGGER_NAME VARCHAR(200) NOT NULL,
    52. TRIGGER_GROUP VARCHAR(200) NOT NULL,
    53. REPEAT_COUNT BIGINT(7) NOT NULL,
    54. REPEAT_INTERVAL BIGINT(12) NOT NULL,
    55. TIMES_TRIGGERED BIGINT(10) NOT NULL,
    56. PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP),
    57. FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)
    58. REFERENCES QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)
    59. );
    60. CREATE TABLE QRTZ_CRON_TRIGGERS
    61. (
    62. SCHED_NAME VARCHAR(120) NOT NULL,
    63. TRIGGER_NAME VARCHAR(200) NOT NULL,
    64. TRIGGER_GROUP VARCHAR(200) NOT NULL,
    65. CRON_EXPRESSION VARCHAR(200) NOT NULL,
    66. TIME_ZONE_ID VARCHAR(80),
    67. PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP),
    68. FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)
    69. REFERENCES QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)
    70. );
    71. CREATE TABLE QRTZ_SIMPROP_TRIGGERS
    72. (
    73. SCHED_NAME VARCHAR(120) NOT NULL,
    74. TRIGGER_NAME VARCHAR(200) NOT NULL,
    75. TRIGGER_GROUP VARCHAR(200) NOT NULL,
    76. STR_PROP_1 VARCHAR(512) NULL,
    77. STR_PROP_2 VARCHAR(512) NULL,
    78. STR_PROP_3 VARCHAR(512) NULL,
    79. INT_PROP_1 INT NULL,
    80. INT_PROP_2 INT NULL,
    81. LONG_PROP_1 BIGINT NULL,
    82. LONG_PROP_2 BIGINT NULL,
    83. DEC_PROP_1 NUMERIC(13,4) NULL,
    84. DEC_PROP_2 NUMERIC(13,4) NULL,
    85. BOOL_PROP_1 VARCHAR(1) NULL,
    86. BOOL_PROP_2 VARCHAR(1) NULL,
    87. PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP),
    88. FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)
    89. REFERENCES QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)
    90. );
    91. CREATE TABLE QRTZ_BLOB_TRIGGERS
    92. (
    93. SCHED_NAME VARCHAR(120) NOT NULL,
    94. TRIGGER_NAME VARCHAR(200) NOT NULL,
    95. TRIGGER_GROUP VARCHAR(200) NOT NULL,
    96. BLOB_DATA BLOB NULL,
    97. PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP),
    98. FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)
    99. REFERENCES QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)
    100. );
    101. CREATE TABLE QRTZ_CALENDARS
    102. (
    103. SCHED_NAME VARCHAR(120) NOT NULL,
    104. CALENDAR_NAME VARCHAR(200) NOT NULL,
    105. CALENDAR BLOB NOT NULL,
    106. PRIMARY KEY (SCHED_NAME,CALENDAR_NAME)
    107. );
    108. CREATE TABLE QRTZ_PAUSED_TRIGGER_GRPS
    109. (
    110. SCHED_NAME VARCHAR(120) NOT NULL,
    111. TRIGGER_GROUP VARCHAR(200) NOT NULL,
    112. PRIMARY KEY (SCHED_NAME,TRIGGER_GROUP)
    113. );
    114. CREATE TABLE QRTZ_FIRED_TRIGGERS
    115. (
    116. SCHED_NAME VARCHAR(120) NOT NULL,
    117. ENTRY_ID VARCHAR(95) NOT NULL,
    118. TRIGGER_NAME VARCHAR(200) NOT NULL,
    119. TRIGGER_GROUP VARCHAR(200) NOT NULL,
    120. INSTANCE_NAME VARCHAR(200) NOT NULL,
    121. FIRED_TIME BIGINT(13) NOT NULL,
    122. SCHED_TIME BIGINT(13) NOT NULL,
    123. PRIORITY INTEGER NOT NULL,
    124. STATE VARCHAR(16) NOT NULL,
    125. JOB_NAME VARCHAR(200) NULL,
    126. JOB_GROUP VARCHAR(200) NULL,
    127. IS_NONCONCURRENT VARCHAR(1) NULL,
    128. REQUESTS_RECOVERY VARCHAR(1) NULL,
    129. PRIMARY KEY (SCHED_NAME,ENTRY_ID)
    130. );
    131. CREATE TABLE QRTZ_SCHEDULER_STATE
    132. (
    133. SCHED_NAME VARCHAR(120) NOT NULL,
    134. INSTANCE_NAME VARCHAR(200) NOT NULL,
    135. LAST_CHECKIN_TIME BIGINT(13) NOT NULL,
    136. CHECKIN_INTERVAL BIGINT(13) NOT NULL,
    137. PRIMARY KEY (SCHED_NAME,INSTANCE_NAME)
    138. );
    139. CREATE TABLE QRTZ_LOCKS
    140. (
    141. SCHED_NAME VARCHAR(120) NOT NULL,
    142. LOCK_NAME VARCHAR(40) NOT NULL,
    143. PRIMARY KEY (SCHED_NAME,LOCK_NAME)
    144. );
    145. commit;

     启动项目又发现新的问题

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

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

     
    

     

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

    总结 最终实现Serializable 接口

  • 相关阅读:
    Flink 结合 HyperScan 问题记录
    120.三角形最小路径和
    【LLS-Player】webrtc m94 修改
    全方位监控基础设施,坚实守护您的业务稳定!
    ASEMI整流桥HD06参数,HD06图片,HD06应用
    一种4g扫码付费通电控制器方案
    hologres基础知识一文全
    人工智能:语音识别技术介绍
    泛型+IO流基础知识+java->符号 lambda表达式
    ElementUI 表单 rules 规则
  • 原文地址:https://blog.csdn.net/qq_34565436/article/details/126137708