Integration With Quartz - shi-yuan/dynamic-datasource-spring-boot-starter GitHub Wiki
Quartz官方Github: https://github.com/quartz-scheduler/quartz 。
Quartz官方文档: http://www.quartz-scheduler.org/ 。
Quartz是一个定时任务框架,常常用于解决分布式系统下的定时任务协调问题。
Quartz常常需要独立运行在主业务数据库外,在springboot场景中可以以下面方式运行。
完整示例项目: https://github.com/baomidou/dynamic-datasource-spring-boot-starter/tree/master/samples/quartz-sample 。
- 项目引用
quartz-starter
。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-quartz</artifactId>
</dependency>
- 创建SchedulerFactoryBeanCustomizer来配置Quartz的个性化配置。
配置独立数据源的参数。
spring:
datasource:
username: root
password: 123456
url: jdbc:mysql://39.108.158.138:3306/quartz
driver-class-name: com.mysql.cj.jdbc.Driver
重要!!自定义SchedulerFactoryBeanCustomizer来指定使用独立创建出来的数据源和事务。
@Autowired
private DataSourceProperties dataSourceProperties;
@Order(Ordered.HIGHEST_PRECEDENCE)
@Bean
public SchedulerFactoryBeanCustomizer schedulerFactoryBeanCustomizer() {
DataSource dataSource = dataSourceProperties.initializeDataSourceBuilder().build();
return schedulerFactoryBean -> {
schedulerFactoryBean.setDataSource(dataSource);
schedulerFactoryBean.setTransactionManager(new DataSourceTransactionManager(dataSource));
};
}
PS: DataSource的创建方式有很多种,本示例项目不详细介绍,请自行google或者参考本项目的creator,只要能创建出来DataSource即可。
https://github.com/shi-yuan/dynamic-datasource-spring-boot-starter/wiki/Manual-Analysis-DataSource