SpringBoot之独立quartz数据源
背景:
之前项目里面把quartz相关的表跟业务数据库(涉及系统业务的库)融合在一起,后面需要把quartz单独拎出来放在一个数据库里面,
旧的数据源配置(application.properties),无其他,程序可以跑:
spring.datasource.password=root
spring.datasource.username=root
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/fdata?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true&zeroDateTimeBehavior=convertToNull&serverTimezone=GMT%2B8
quartz独立数据库:
1、增加quartz数据源配置(application.properties):
# quartz datasource conf
spring.datasource.quartz.password=root
spring.datasource.quartz.username=root
spring.datasource.quartz.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.quartz.url=jdbc:mysql://localhost:3306/fdata_quartz_test?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true
2、增加DataSourceConfig类
加入了上述配置但是这样配置的datasouce并不生效,用的还是原来的数据库。查了些网上的资料,要给scheduler单独的dataSource,而且发现springboot文档里有
"To have Quartz use a DataSource other than the application’s main DataSource, declare a DataSource bean, annotating its @Bean method with @QuartzDataSource. Doing so ensures that the Quartz-specific DataSource is used by both the SchedulerFactoryBean and for schema initialization."
翻译:要让Quartz使用除应用程序主数据源之外的其他数据源,需要声明一个数据源bean,并用@QuartzDataSource注释它的@Bean方法。这样做可以确保SchedulerFactoryBean和模式初始化都使用特定于quartzs的数据源。
所以增加 DataSourceConfig类,如下:
1 package com.xx.fdata.console.conf;
2 import javax.sql.DataSource;
3 import lombok.extern.slf4j.Slf4j;
4 import org.apache.commons.dbcp.BasicDataSource;
5 import org.springframework.boot.autoconfigure.quartz.QuartzDataSource;
6 import org.springframework.boot.context.properties.ConfigurationProperties;
7 import org.springframework.context.annotation.Bean;
8 import org.springframework.context.annotation.Configuration;
9 import org.springframework.context.annotation.Primary;
10
11 @Slf4j
12 @Configuration
13 public class DataSourceConfig {
14
15 /**
16 * 数据源配置的前缀,必须与application.properties中配置的对应数据源的前缀一致
17 */
18 private static final String BUSINESS_DATASOURCE_PREFIX = "spring.datasource";
19
20 private static final String QUARTZ_DATASOURCE_PREFIX = "spring.datasource.quartz";
21
22 @Primary
23 @Bean
24 @ConfigurationProperties(prefix = BUSINESS_DATASOURCE_PREFIX)
25 public BasicDataSource businessDataSource() {
26 return new BasicDataSource();
27 }
28
29 /**
30 * @QuartzDataSource 注解则是配置Quartz独立数据源的配置
31 */
32 @Bean
33 @QuartzDataSource
34 @ConfigurationProperties(prefix = QUARTZ_DATASOURCE_PREFIX)
35 public DataSource quartzDataSource(){
36 return new BasicDataSource();
37 }
38 }
3、使用的是dbcp连接池,所以pom增加相应配置:
<dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
<version>1.4</version>
</dependency>
参考资料:
2、springboot 2.x 集成quartz持久化到一个单独的dataSource时遇到的坑
补充:
完成需求过程中最初是在quartz.properties里面增加quartzDataSource内容,但是没什么效果,还是用的业务数据库,后面就有了前面提到的DataSourceConfig类的诞生:
spring.quartz.properties.org.quartz.jobStore.dataSource=quartzDataSource #数据源
spring.quartz.properties.org.quartz.dataSource.quartzDataSource.driver=com.mysql.jdbc.Driver
spring.quartz.properties.org.quartz.dataSource.quartzDataSource.URL=jdbc:mysql://localhost:3306/fdata_quartz_test?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true
spring.quartz.properties.org.quartz.dataSource.quartzDataSource.user=root
spring.quartz.properties.org.quartz.dataSource.quartzDataSource.password=root
spring.quartz.properties.org.quartz.dataSource.quartzDataSource.validationQuery=select 1
SpringBoot之独立quartz数据源的更多相关文章
- springboot 配置quart多数据源
Springboot版本为2.1.6 多数据源配置使用druid进行配置,数据库使用的为Oracle11g,如果使用的是MySQL,直接将数据库的地址和驱动改一下即可 <parent> & ...
- springboot中实现多数据源
springboot中实现多数据源 1.什么场景需要多数据源 业务读写分离 业务分库 业务功能模块拆分多库 2.常见的多数据源的方案 按照数据源分别把mapper和entity放到不同的package ...
- SpringBoot与动态多数据源切换
本文简单的介绍一下基于SpringBoot框架动态多数据源切换的实现,采用主从配置的方式,配置master.slave两个数据库. 一.配置主从数据库 spring: datasource: ty ...
- SpringBoot定时任务 - 集成quartz实现定时任务(单实例和分布式两种方式)
最为常用定时任务框架是Quartz,并且Spring也集成了Quartz的框架,Quartz不仅支持单实例方式还支持分布式方式.本文主要介绍Quartz,基础的Quartz的集成案例本,以及实现基于数 ...
- SpringBoot+MyBatis配置多数据源
SpringBoot 可以支持多数据源,这是一个非常值得学习的功能,但是从现在主流的微服务的架构模式中,每个应用都具有唯一且准确的功能,多数据源的需求很难用到,考虑到实际情况远远比理论复杂的多,这里还 ...
- SpringBoot整合阿里Druid数据源及Spring-Data-Jpa
SpringBoot整合阿里Druid数据源及Spring-Data-Jpa https://mp.weixin.qq.com/s?__biz=MzU0MDEwMjgwNA==&mid=224 ...
- springboot 中使用Druid 数据源提供数据库监控
一.springboot 中注册 Servlet/Filter/Listener 的方式有两种,1 通过代码注册 ServletRegistrationBean. FilterRegistration ...
- SpringBoot整合Mybatis多数据源 (AOP+注解)
SpringBoot整合Mybatis多数据源 (AOP+注解) 1.pom.xml文件(开发用的JDK 10) <?xml version="1.0" encoding=& ...
- SpringBoot和Mycat动态数据源项目整合
SpringBoot项目整合动态数据源(读写分离) 1.配置多个数据源,根据业务需求访问不同的数据,指定对应的策略:增加,删除,修改操作访问对应数据,查询访问对应数据,不同数据库做好的数据一致性的处理 ...
- 三、SpringBoot 整合mybatis 多数据源以及分库分表
前言 说实话,这章本来不打算讲的,因为配置多数据源的网上有很多类似的教程.但是最近因为项目要用到分库分表,所以让我研究一下看怎么实现.我想着上一篇博客讲了多环境的配置,不同的环境调用不同的数据库,那接 ...
随机推荐
- VeeValidate 注册实例
注册 1 安装: npm install vee-validate --save 2.mian.js 填写 import Vue from 'vue' import VeeValidate, {Val ...
- 【Java】zuul
报错 com.netflix.zuul.exception.ZuulException: Hystrix Readed time out 解决办法,zuul模块的yml配置文件增加 ribbon: C ...
- 数据驱动DDT(Data-Driven Tests):测试数据的参数化
准备第三方库: 首先安装ddt库,其次在脚本中引入ddt 打开官网 https://pypi.org/project/ddt/ from ddt import ddt,data,unpack @ddt ...
- nmap扫描
Nmap扫描 学习老师发的链接中的指令:https://www.cnblogs.com/nmap/p/6232207.html 下载了nmap软件 根据教学中的操作查找虚拟机的IP地址 并用主机对其扫 ...
- go 单测
1.在需要测试的go文件同级目录下创建${需要测试的文件名}_test.go文件 2. err, info :函数的返回值 "account-base-dd",1:传进去的参数 f ...
- Linux 使用Samba或NFS实现文件共享
SAMBA文件共享服务 Samba是一款开源的文件共享软件,经过简单配置就能够实现Linux系统与Windows系统之间的文件共享工作. 例1:配置Samba服务前,先删掉Samba服务主配置文件中的 ...
- 关于unity游戏的类名查找
这里我用火影演示 首先我们知道,鸣人的决斗场技能代码为900010151,0251,0351,0451等等 我们进行搜索 然后再转到第二个进去(第一个为忍者技能的序列表) 注:序列表里的代码与那个他相 ...
- app内打开外部第三方瞎下载链接
Q:我用cordova开发项目,想在app内跳转外部链接,安装了cordova-plugin-inappbrowser后确实可以跳转,但是跳转的页面有个按钮,原本点击会下载app,现在点击后毫无反应, ...
- Callable、Future、FutureTash详解
Callable.Future.FutureTash详解 Callable与Future是在JAVA的后续版本中引入进来的,Callable类似于Runnable接口,实现Callable接 口的类与 ...
- Python 去掉文本内容中的\xa0字符
爬取网页时,不可避免会遇到\xa0字符串,就会发现,正则re.sub(r'\xa0', '')和字符串的replace都不管用. 通常地,我们所用的空格的ASCII码是 \x20 ,是在标准ASCII ...