Quartz 单独数据源 发表于 2022-06-01 | 分类于 ---代码备份 , ---Quartz | 仅记录这个一开始也是搞了好久,最后还是看源码,改的才可以成功。 v1123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081### jdbcspring.datasource.type = com.zaxxer.hikari.HikariDataSourcespring.datasource.driver-class-name = org.postgresql.Driverspring.datasource.url = jdbc:postgresql://tencent:5432/hawkeye?useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT%2B8spring.datasource.username = postgresspring.datasource.password = xxxspring.datasource.dynamic.primary = hawkeyespring.datasource.dynamic.strict = false# hawkeyespring.datasource.dynamic.datasource.hawkeye.url = jdbc:postgresql://tencent:5432/hawkeye?useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT%2B8spring.datasource.dynamic.datasource.hawkeye.username = postgresspring.datasource.dynamic.datasource.hawkeye.password = xxxspring.datasource.dynamic.datasource.hawkeye.driver-class-name = org.postgresql.Driver# quartzspring.datasource.dynamic.datasource.quartz.url = jdbc:postgresql://tencent:5432/quartz?useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT%2B8spring.datasource.dynamic.datasource.quartz.username = postgresspring.datasource.dynamic.datasource.quartz.password = xxxspring.datasource.dynamic.datasource.quartz.driver-class-name = org.postgresql.Driver### eureka-client# eureka地址eureka.client.service-url.defaultZone = http://10.11.12.234:8761/eureka/# 实例注册到 eurekaeureka.client.register-with-eureka = true# 拉取实例列表信息eureka.client.fetch-registry = true### eureka-instance# 访问路径可以显示ipeureka.instance.prefer-ip-address = true# 租客1秒交一次房租#eureka.instance.lease-renewal-interval-in-seconds = 1# 租客超过两秒不交房租就滚蛋#eureka.instance.lease-expiration-duration-in-seconds = 2### quartz# quartz true=自动启动 false=手动启动spring.quartz.auto-startup = true# 0=立即启动。5=延迟 5秒后启动spring.quartz.startup-delay = 0# 相同 scheduler-name 的节点,形成一个 Quartz 集群# 下面两种配置选择一个即可,一个是 spring 提供(优先级高),一个是 quartz 提供。spring.quartz.scheduler-name = hawkeye_scheduler#spring.quartz.properties.org.quartz.scheduler.instanceName=hawkeye_scheduler# 配置 instanceId,可手动配置,也可使用生成策略(HOSTNAME + CURRENT_TIME),自动生成实例名称(instanceId)。# 指定实例名称 ===> 对应表 qrtz_scheduler_state#spring.quartz.properties.org.quartz.scheduler.instanceId=local_hawkeye_schedulerspring.quartz.properties.org.quartz.scheduler.instanceId = AUTOspring.quartz.properties.org.quartz.scheduler.instanceIdGenerator.class = org.quartz.simpl.SimpleInstanceIdGenerator# 应用关闭时,是否等待定时任务执行完成。默认为 false ,建议设置为 true。spring.quartz.wait-for-jobs-to-complete-on-shutdown = true# quartz 数据源配置(此配置非官方,仅为自定义。具体使用参考:QuartzConfig.schedulerFactoryBeanCustomizer)spring.quartz.properties.quartzDataSourceName = quartz# 默认 memory# 持久化 jdbc 注意:要注入 @QuartzDataSource 标注的 DataSource才可以生效spring.quartz.job-store-type = jdbc# MySQL org.quartz.impl.jdbcjobstore.StdJDBCDelegate# PostgreSQL org.quartz.impl.jdbcjobstore.PostgreSQLDelegatespring.quartz.properties.org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.PostgreSQLDelegate# 是否自动使用 SQL 初始化 Quartz 表结构。# 手动创建表结构 NEVER# 删除表,重新创建 ALWAYSspring.quartz.jdbc.initialize-schema = ALWAYS# quartz 表前缀spring.quartz.properties.org.quartz.jobStore.tablePrefix = QRTZ_# quartz 集群模式配置spring.quartz.properties.org.quartz.jobStore.isClustered = truespring.quartz.properties.org.quartz.jobStore.clusterCheckinInterval = 1000# quartz 线程池相关配置# 线程池大小。默认 10# 线程优先级# 线程池类型spring.quartz.properties.org.quartz.threadPool.threadCount = 10spring.quartz.properties.org.quartz.threadPool.threadPriority = 5spring.quartz.properties.org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool### datartdatart.userLoginParam.username = amorosdatart.userLoginParam.password = 123456datart.orgId = 144f08e20bdc4dc093121cde066ffb5b 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859package com.amoros.hawkeye.config;import com.baomidou.dynamic.datasource.DynamicRoutingDataSource;import org.springframework.beans.factory.annotation.Value;import org.springframework.boot.autoconfigure.quartz.QuartzDataSourceScriptDatabaseInitializer;import org.springframework.boot.autoconfigure.quartz.QuartzProperties;import org.springframework.boot.autoconfigure.quartz.SchedulerFactoryBeanCustomizer;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import javax.sql.DataSource;/** * Quartz 配置 * * @author 陶攀峰 * @date 2022-04-27 05:14 */@Configurationpublic class QuartzConfig { /** * 用于从 mybatis.plus 动态数据源容器 中获取 quartz 所使用的数据源 */ @Value("${spring.quartz.properties.quartzDataSourceName}") private String quartzDataSourceName; /** * quartz 持久化:配置 DataSource * 【SchedulerFactoryBean:用于创建 Scheduler】 * * @param dynamicRoutingDataSource mybatis.plus 动态数据源 * @return SchedulerFactoryBeanCustomizer => 作用参考类文档,用在 QuartzAutoConfiguration.quartzScheduler方法 */ @Bean public SchedulerFactoryBeanCustomizer schedulerFactoryBeanCustomizer(DynamicRoutingDataSource dynamicRoutingDataSource) { DataSource quartzDataSource = dynamicRoutingDataSource.getDataSource(quartzDataSourceName); return schedulerFactoryBean -> schedulerFactoryBean.setDataSource(quartzDataSource); } /** * quartz 持久化:配置 DataSource * 【QuartzDataSourceScriptDatabaseInitializer:数据库初始化】 * * @param dynamicRoutingDataSource mybatis.plus 动态数据源 * @param quartzProperties mybatis.plus 动态数据源 * @return SchedulerFactoryBeanCustomizer => 作用参考类文档,用在 QuartzAutoConfiguration.quartzScheduler方法 */ @Bean public QuartzDataSourceScriptDatabaseInitializer quartzDataSourceScriptDatabaseInitializer(DynamicRoutingDataSource dynamicRoutingDataSource, QuartzProperties quartzProperties) { DataSource quartzDataSource = dynamicRoutingDataSource.getDataSource(quartzDataSourceName); return new QuartzDataSourceScriptDatabaseInitializer(quartzDataSource, quartzProperties); }} v22024-05-08 14:05:25 同步一下现有的。 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283### jdbcspring.datasource.type = com.zaxxer.hikari.HikariDataSourcespring.datasource.driver-class-name = org.postgresql.Driverspring.datasource.url = jdbc:postgresql://10.11.12.232:5432/hawkeye?useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT%2B8spring.datasource.username = postgresspring.datasource.password = postgres# hikari 优化spring.datasource.hikari.minimum-idle = 5spring.datasource.hikari.maximum-pool-size = 15spring.datasource.hikari.auto-commit = truespring.datasource.hikari.idle-timeout = 30000spring.datasource.hikari.pool-name = hikarispring.datasource.hikari.max-lifetime = 900000spring.datasource.hikari.connection-timeout = 15000spring.datasource.hikari.connection-test-query = select 1### quartz# ==== 配置参考类 org.quartz.impl.StdSchedulerFactory# ==== 配置参考官方文档 http://www.quartz-scheduler.org/documentation/quartz-2.3.0/configuration/# ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓# quartz true=自动启动 false=手动启动(参考 com.amoros.hawkeye.job.ScheduleUtils.init)spring.quartz.auto-startup = false# 0=立即启动。5=延迟 5秒后启动spring.quartz.startup-delay = 0# 相同 scheduler-name 的节点,形成一个 Quartz 集群# 下面两种配置选择一个即可,一个是 spring 提供(优先级高),一个是 quartz 提供。spring.quartz.scheduler-name = hawkeye_scheduler#spring.quartz.properties.org.quartz.scheduler.instanceName=hawkeye_scheduler# 配置 instanceId,可手动配置,也可使用生成策略(HOSTNAME + CURRENT_TIME),自动生成实例名称(instanceId)。# 指定实例名称 ===> 对应表 qrtz_scheduler_state#spring.quartz.properties.org.quartz.scheduler.instanceId=local_hawkeye_schedulerspring.quartz.properties.org.quartz.scheduler.instanceId = AUTOspring.quartz.properties.org.quartz.scheduler.instanceIdGenerator.class = org.quartz.simpl.SimpleInstanceIdGenerator# 应用关闭时,是否等待定时任务执行完成。默认为 false ,建议设置为 true。spring.quartz.wait-for-jobs-to-complete-on-shutdown = true# 默认 memory# 持久化 jdbc 注意:要注入 @QuartzDataSource 标注的 DataSource才可以生效spring.quartz.job-store-type = jdbc# 默认 JobStoreCMT 无事务(不会提交/回滚) JobStoreTX 事务(会提交/回滚)spring.quartz.properties.org.quartz.jobStore.class = org.quartz.impl.jdbcjobstore.JobStoreTX# MySQL org.quartz.impl.jdbcjobstore.StdJDBCDelegate# PostgreSQL org.quartz.impl.jdbcjobstore.PostgreSQLDelegatespring.quartz.properties.org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.PostgreSQLDelegate# 是否自动使用 SQL 初始化 Quartz 表结构。# 手动创建表结构 NEVER# 删除表,重新创建 ALWAYS# MySQL => tables_mysql_innodb.sql# PG => tables_postgres.sqlspring.quartz.jdbc.initialize-schema = NEVER# quartz 表前缀spring.quartz.properties.org.quartz.jobStore.tablePrefix = QRTZ_# 失火阈值 默认60sspring.quartz.properties.org.quartz.jobStore.misfireThreshold = 60000# 是否集群 默认falsespring.quartz.properties.org.quartz.jobStore.isClustered = true# 集群检查 默认15sspring.quartz.properties.org.quartz.jobStore.clusterCheckinInterval = 5000# 最大失火处理 默认20spring.quartz.properties.org.quartz.jobStore.maxMisfiresToHandleAtATime = 20# 批量获取trigger最大计数 默认1 注意: >1 必须开启 acquireTriggersWithinLock=truespring.quartz.properties.org.quartz.scheduler.batchTriggerAcquisitionMaxCount = 10# 默认 false true=batchTriggerAcquisitionMaxCount is set > 1spring.quartz.properties.org.quartz.jobStore.acquireTriggersWithinLock = true# 数据源别名,自定义spring.quartz.properties.org.quartz.jobStore.dataSource = qzDSspring.quartz.properties.org.quartz.dataSource.qzDS.URL = ${spring.datasource.url}spring.quartz.properties.org.quartz.dataSource.qzDS.user = ${spring.datasource.username}spring.quartz.properties.org.quartz.dataSource.qzDS.password = ${spring.datasource.password}spring.quartz.properties.org.quartz.dataSource.qzDS.driver = ${spring.datasource.driver-class-name}# 使用 hikaricp 作为数据库连接池 <= org.quartz.utils.PoolingConnectionProvider.POOLING_PROVIDER_HIKARICPspring.quartz.properties.org.quartz.dataSource.qzDS.provider = hikaricp# 最大数据库连接数 默认10spring.quartz.properties.org.quartz.dataSource.qzDS.maxConnections = 10# 每次连接池返回时要执行的数据库 sql 查询,以确保它仍然有效。spring.quartz.properties.org.quartz.dataSource.qzDS.validationQuery = select 1# 线程池大小。默认 10spring.quartz.properties.org.quartz.threadPool.threadCount = 10# 线程优先级spring.quartz.properties.org.quartz.threadPool.threadPriority = 5# 线程池类型spring.quartz.properties.org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool