做网站如何与腾讯合作视频专用客户端app
文章目录
- 集成 Quartz
- 引入 quartz-starter
- 配置数据源参数
- 创建任务
- 配置 Quartz 实际使用的数据源
- 方式一: 自定义 SchedulerFactoryBeanCustomizer
- 方式二: 使用@QuartzDataSource来指明quartz数据源
- 集成 ShardingJDBC
- 项目引入 shardingsphere 依赖
- 分别配置shardingjdbc和多数据源
- 通过自定义 DynamicDataSourceProvider 完成与shardingsphere 的集成
🗯️ 上节回顾:上一节中,我们集成了 MyBatisPlus 及 p6spy。
👉 本节目标:实现第三方技术框架的集成,比如 Quartz、ShardingJDBC。
🚀 本节内容:
- 集成 Quartz
- 集成 ShardingJDBC
🔊 版本
- JDK 17
- Spring Boot 3.2.1
- dynamic-datasource 4.3.0
集成 Quartz
Github:https://github.com/quartz-scheduler/quartz
文档:http://www.quartz-scheduler.org/
Quartz 是一个定时任务框架,常常用于解决分布式系统下的定时任务协调问题。
Quartz 常常需要独立运行在主业务数据库外, 在 springboot 场景中可以以下面方式运行。
引入 quartz-starter
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-quartz</artifactId>
</dependency>
配置数据源参数
根据需要可配置独立数据源的参数,或把 quartz 数据源也作为动态数据源的一个数据源。
一般来说二种方式根据需要选择一种即可,如果没有在动态数据源里需要切到 quartz 的的场景,建议独立配。
spring:datasource: #独立quartz配置username: rootpassword: 123456url: jdbc:mysql://39.108.158.138:3306/quartzdriver-class-name: com.mysql.cj.jdbc.Driverdynamic:datasource:master:username: sapassword: ""url: jdbc:h2:mem:testdriver-class-name: org.h2.Driverquartz: #把quartz数据源也作为动态数据源的一个数据源username: rootpassword: 123456url: jdbc:mysql://39.108.158.138:3306/quartzdriver-class-name: com.mysql.cj.jdbc.Driverquartz:job-store-type: jdbcjdbc:initialize-schema: always
创建任务
创建一个每秒打印一次hello world的任务。
@Slf4j
public class HelloworldJob extends QuartzJobBean {private static int time = 0;@Overrideprotected void executeInternal(JobExecutionContext jobExecutionContext) throws JobExecutionException {log.info("Hello world!:" + jobExecutionContext.getJobDetail().getKey() + "-" + (time++));}
}
对应的自动配置:
@Configuration