Integration With Quartz - shi-yuan/dynamic-datasource-spring-boot-starter GitHub Wiki

前言

Quartz官方Github: https://github.com/quartz-scheduler/quartz

Quartz最新版本:

Quartz官方文档: http://www.quartz-scheduler.org/

Quartz是一个定时任务框架,常常用于解决分布式系统下的定时任务协调问题。


Quartz常常需要独立运行在主业务数据库外,在springboot场景中可以以下面方式运行。

完整示例项目: https://github.com/baomidou/dynamic-datasource-spring-boot-starter/tree/master/samples/quartz-sample

使用方法

  1. 项目引用 quartz-starter
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-quartz</artifactId>
        </dependency>
  1. 创建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

⚠️ **GitHub.com Fallback** ⚠️