diff --git a/lab-28/lab-28-task-quartz-jdbc/pom.xml b/lab-28/lab-28-task-quartz-jdbc/pom.xml index 767997d7..794bd75c 100644 --- a/lab-28/lab-28-task-quartz-jdbc/pom.xml +++ b/lab-28/lab-28-task-quartz-jdbc/pom.xml @@ -13,6 +13,17 @@ lab-28-task-quartz-jdbc + + + org.springframework.boot + spring-boot-starter-jdbc + + + mysql + mysql-connector-java + 5.1.48 + + org.springframework.boot diff --git a/lab-28/lab-28-task-quartz-jdbc/src/main/java/cn/iocoder/springboot/lab28/task/config/DataSourceConfiguration.java b/lab-28/lab-28-task-quartz-jdbc/src/main/java/cn/iocoder/springboot/lab28/task/config/DataSourceConfiguration.java new file mode 100644 index 00000000..fc8cbe46 --- /dev/null +++ b/lab-28/lab-28-task-quartz-jdbc/src/main/java/cn/iocoder/springboot/lab28/task/config/DataSourceConfiguration.java @@ -0,0 +1,69 @@ +package cn.iocoder.springboot.lab28.task.config; + +import com.zaxxer.hikari.HikariDataSource; +import org.springframework.boot.autoconfigure.jdbc.DataSourceProperties; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Primary; +import org.springframework.util.StringUtils; + +import javax.sql.DataSource; + +@Configuration +public class DataSourceConfiguration { + + /** + * 创建 user 数据源的配置对象 + */ + @Primary + @Bean(name = "userDataSourceProperties") + @ConfigurationProperties(prefix = "spring.datasource.user") // 读取 spring.datasource.user 配置到 DataSourceProperties 对象 + public DataSourceProperties userDataSourceProperties() { + return new DataSourceProperties(); + } + + /** + * 创建 user 数据源 + */ + @Bean(name = "userDataSource") + @ConfigurationProperties(prefix = "spring.datasource.user.hikari") // 读取 spring.datasource.user 配置到 HikariDataSource 对象 + public DataSource userDataSource() { + // 获得 DataSourceProperties 对象 + DataSourceProperties properties = this.userDataSourceProperties(); + // 创建 HikariDataSource 对象 + return createHikariDataSource(properties); + } + + /** + * 创建 quartz 数据源的配置对象 + */ + @Bean(name = "quartzDataSourceProperties") + @ConfigurationProperties(prefix = "spring.datasource.quartz") // 读取 spring.datasource.quartz 配置到 DataSourceProperties 对象 + public DataSourceProperties quartzDataSourceProperties() { + return new DataSourceProperties(); + } + + /** + * 创建 quartz 数据源 + */ + @Bean(name = "quartzDataSource") + @ConfigurationProperties(prefix = "spring.datasource.quartz.hikari") + public DataSource quartzDataSource() { + // 获得 DataSourceProperties 对象 + DataSourceProperties properties = this.quartzDataSourceProperties(); + // 创建 HikariDataSource 对象 + return createHikariDataSource(properties); + } + + private static HikariDataSource createHikariDataSource(DataSourceProperties properties) { + // 创建 HikariDataSource 对象 + HikariDataSource dataSource = properties.initializeDataSourceBuilder().type(HikariDataSource.class).build(); + // 设置线程池名 + if (StringUtils.hasText(properties.getName())) { + dataSource.setPoolName(properties.getName()); + } + return dataSource; + } + +} diff --git a/lab-28/lab-28-task-quartz-jdbc/src/main/resources/application.yaml b/lab-28/lab-28-task-quartz-jdbc/src/main/resources/application.yaml index a8e4bad8..f3b64151 100644 --- a/lab-28/lab-28-task-quartz-jdbc/src/main/resources/application.yaml +++ b/lab-28/lab-28-task-quartz-jdbc/src/main/resources/application.yaml @@ -1,4 +1,30 @@ spring: + datasource: + user: + url: jdbc:mysql://127.0.0.1:3306/lab-28-quartz-jdbc-user?useSSL=false&useUnicode=true&characterEncoding=UTF-8 + driver-class-name: com.mysql.jdbc.Driver + username: root + password: + quartz: + url: jdbc:mysql://127.0.0.1:3306/lab-28-quartz-jdbc-quartz?useSSL=false&useUnicode=true&characterEncoding=UTF-8 + driver-class-name: com.mysql.jdbc.Driver + username: root + password: + + # Quartz 的配置,对应 QuartzProperties 配置类 quartz: + scheduler-name: clusteredScheduler # Scheduler 名字。默认为 schedulerName + job-store-type: jdbc # Job 存储器类型。默认为 memory 表示内存,可选 jdbc 使用数据库。 auto-startup: true # Quartz 是否自动启动 startup-delay: 0 # 延迟 N 秒启动 + wait-for-jobs-to-complete-on-shutdown: true # 应用关闭时,是否等待定时任务执行完成。默认为 false ,建议设置为 true + overwrite-existing-jobs: false # 是否覆盖已有 Job 的配置 + properties: # 添加 Quartz Scheduler 附加属性,更多可以看 http://www.quartz-scheduler.org/documentation/2.4.0-SNAPSHOT/configuration.html 文档 + org: + quartz: + threadPool: + threadCount: 25 # 线程池大小。默认为 10 。 + threadPriority: 5 # 线程优先级 + class: org.quartz.simpl.SimpleThreadPool # 线程池类型 + jdbc: # 使用 JDBC 的 JobStore 的时候,JDBC 的配置 + initialize-schema: never # TODO diff --git a/lab-28/lab-28-task-quartz-memory/src/main/resources/application.yaml b/lab-28/lab-28-task-quartz-memory/src/main/resources/application.yaml index 1df68c68..0bdcb866 100644 --- a/lab-28/lab-28-task-quartz-memory/src/main/resources/application.yaml +++ b/lab-28/lab-28-task-quartz-memory/src/main/resources/application.yaml @@ -10,7 +10,7 @@ spring: org: quartz: threadPool: - threadCount: 25 # 线程数 + threadCount: 25 # 线程池大小。默认为 10 。 threadPriority: 5 # 线程优先级 class: org.quartz.simpl.SimpleThreadPool # 线程池类型 # jdbc: # 这里暂时不说明,使用 JDBC 的 JobStore 的时候,才需要配置