8.quartz的持久化


它的持久化也正是项目考虑是否使用quartz的最关键原因,它一共会给我们自动创建11张表,会把内存中的jobdetail和trigger的二进制的形式序列化到数据库中。

等下次服务重启之后,会自动执行数据库里面的tirgger和jobdetail,哪怕这时候,系统中已经把对应的jobdetail和trigger给去掉了,只要Job还在系统里。

select * from qrtz_triggers;
select * from qrtz_job_details;
select * from qrtz_cron_triggers;
select * from qrtz_calendars;
select * from qrtz_locks;
select * from qrtz_blob_triggers;
select * from qrtz_fired_triggers;
select * from qrtz_simple_triggers;
select * from qrtz_scheduler_state;
select * from qrtz_paused_trigger_grps;
select * from qrtz_simprop_triggers;

前面3张表是最常用的。

 

持久化的操作其实只需要增加配置就可以了,在spring环境下就是修改yml或者propertites文件而已

持久化策略1:和业务库公用一个库

spring:
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://10.119.169.24:3306/krm_sit?characterEncoding=utf8&useSSL=false&allowMultiQueries=true
    username: krm-sit
    password: Kpmg#2020

  quartz:
    job-store-type: jdbc
    jdbc:
      initialize-schema: always
      #initialize-schema: never
View Code

持久化策略2:和业务库分开使用

spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/quartz?characterEncoding=utf8&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=151310
spring.quartz.properties.org.quartz.dataSource.myDS.URL=jdbc:mysql:///quartz?characterEncoding=utf8&serverTimezone=UTC
spring.quartz.properties.org.quartz.dataSource.myDS.user=root
spring.quartz.properties.org.quartz.dataSource.myDS.password=151310
spring.quartz.properties.org.quartz.dataSource.myDS.driver=com.mysql.jdbc.Driver
spring.quartz.properties.org.quartz.dataSource.myDS.maxConnections=5
spring.quartz.job-store-type=jdbc
View Code

这里我没测试。

spring.quartz.jdbc.initialize-schema: never
always:每次服务重启,会清空表
nerver:从来不清空表,也就是老的定时任务启动时候还会继续运行


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM