Springboot quartz 独立数据源配置

本文详细介绍了如何在Springboot中配置独立的数据源,并结合Quartz实现定时任务的设置,包括Pom文件的依赖管理,yaml配置文件的数据源与Quartz配置,以及如何创建调度工具。
摘要由CSDN通过智能技术生成

Springboot quartz 独立数据源配置

Pom


		<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>druid-spring-boot-starter</artifactId>
			<version>1.1.17</version>
		</dependency>
		<dependency>
			<groupId>com.oracle</groupId>
			<artifactId>ojdbc6</artifactId>
			<version>12.1.0.2</version>
		</dependency>
<!--		mysql-->
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
		</dependency>
	</dependencies>
	 <!-- quartz -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-quartz</artifactId>
        </dependency>

yaml

spring:
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    druid:
      business: # 配置业务数据源
        url: jdbc:oracle:thin:@1.1.1.1:1521:db1771
        username: root
        password: 123456
        driver-class-name: oracle.jdbc.driver.OracleDriver
      quartz:   #配置Quartz数据源
        url: jdbc:mysql://2.2.2.2:3306/test_job?characterEncoding=utf-8&useSSL=false
        username: root
        password: 123456
        driver-class-name: com.mysql.jdbc.Driver
        # 下面为连接池的补充设置,应用到上面所有数据源中
      # 初始化大小,最小,最大
      initialSize: 5
      minIdle: 5
      maxActive: 15
      # 配置获取连接等待超时的时间
      maxWait: 60000
      # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
      timeBetweenEvictionRunsMillis: 60000
      minEvictableIdleTimeMillis: 300000
      testWhileIdle: true
      testOnBorrow: false
      testOnReturn: false
      # 打开PSCache,并且指定每个连接上PSCache的大小
      poolPreparedStatements: true
      # 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
      maxPoolPreparedStatementPerConnectionSize: 20
      filters: stat,wall,log4j2
      # 通过connectProperties属性来打开mergeSql功能;慢SQL记录
      connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
      # 合并多个DruidDataSource的监控数据
      useGlobal
Spring BootQuartz的结合,可以实现动态配置定时任务。下面是一种实现方式: 1. 首先,在pom.xml文件中添加QuartzSpring Boot的相关依赖: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-quartz</artifactId> </dependency> ``` 2. 创建一个Quartz配置类,用于配置Quartz的相关属性。可以使用@Configuration注解将该类声明为配置类,并使用@Bean注解将SchedulerFactoryBean实例化: ```java import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.scheduling.quartz.SchedulerFactoryBean; @Configuration public class QuartzConfig { // 其他配置属性 @Bean public SchedulerFactoryBean schedulerFactoryBean() { SchedulerFactoryBean schedulerFactoryBean = new SchedulerFactoryBean(); // 配置其他属性 return schedulerFactoryBean; } } ``` 3. 创建定时任务类,实现Job接口,并重写execute方法,用于定义具体的定时任务逻辑: ```java import org.quartz.Job; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; public class MyJob implements Job { @Override public void execute(JobExecutionContext context) throws JobExecutionException { // 定时任务逻辑 } } ``` 4. 在需要动态配置的地方,使用@Autowired注解注入SchedulerFactoryBean,并使用schedulerFactoryBean.getScheduler()获取Scheduler实例。然后,通过Scheduler实例来动态配置定时任务: ```java import org.quartz.*; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @Component public class MyScheduler { @Autowired private SchedulerFactoryBean schedulerFactoryBean; public void scheduleJob(String jobName, String cronExpression) throws SchedulerException { Scheduler scheduler = schedulerFactoryBean.getScheduler(); JobDetail jobDetail = JobBuilder.newJob(MyJob.class) .withIdentity(jobName) .build(); Trigger trigger = TriggerBuilder.newTrigger() .withIdentity(jobName + "Trigger") .withSchedule(CronScheduleBuilder.cronSchedule(cronExpression)) .build(); scheduler.scheduleJob(jobDetail, trigger); } } ``` 通过调用MyScheduler的scheduleJob方法,可以动态配置定时任务的名称和cron表达式。注意,这里的cron表达式用于定义定时任务的触发规则。 以上就是使用Spring BootQuartz实现动态配置定时任务的基本步骤。可以根据具体需求进行扩展和调整。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值