Quartz 单独数据源 发表于 2022-06-01 | 分类于 ---代码备份 , ---Quartz | 仅记录这个一开始也是搞了好久,最后还是看源码,改的才可以成功。 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081### 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); }}