欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

XXLJOB2.1.0数据源配置踩坑记录

程序员文章站 2022-07-01 23:32:22
最近在看XXLJOB,因为截至到发文时间最新的版本是2.1.0而且需要建立的数据库与Quartz解耦了,所以就用了最新的版本。 首先说一下踩坑过程: 代码开发完成之后,在定时跑的时候第一次跑的多数失败,报的错是:Communications link failure 上网搜了一下说是MySQL数据库 ......

最近在看xxljob,因为截至到发文时间最新的版本是2.1.0而且需要建立的数据库与quartz解耦了,所以就用了最新的版本。

首先说一下踩坑过程:

代码开发完成之后,在定时跑的时候第一次跑的多数失败,报的错是:communications link failure

上网搜了一下说是mysql数据库连接时间超过八小时就会断开需要加一些配置,或者把数据库的时间延长。原先用的数据源是druid,所以就把网上找到的代码加到数据源配置上,同时延长了mysql的链接持续时间,问题依然没有解决。

一次偶然的时间发现,xxljob本身用的数据源并不是druid而是tomcat自身集成的数据源,于是就萌生了换数据源的想法。最后成功了。

正确的配置如下:

数据源配置采用的是多数据源。用的是配置文件方式配置:

其中主数据源的xml的配置代码为:

spring.datasource.master.url=jdbc:mysql://*.*.*.*:3306/test?useunicode=true&characterencoding=utf8&servertimezone=gmt%2b8
spring.datasource.master.username=test
spring.datasource.master.password=test
spring.datasource.master.driver-class-name=com.mysql.jdbc.driver
spring.datasource.master.type=org.apache.tomcat.jdbc.pool.datasource
spring.datasource.master.max-wait=10000
spring.datasource.master.max-active=30
spring.datasource.master.test-on-borrow=true
spring.datasource.master.validation-query=select 1
spring.datasource.master.validation-interval=30000

主数据源的配置文件的代码为:

import org.apache.ibatis.session.sqlsessionfactory;
import org.mybatis.spring.sqlsessionfactorybean;
import org.mybatis.spring.sqlsessiontemplate;
import org.mybatis.spring.annotation.mapperscan;
import org.springframework.beans.factory.annotation.qualifier;
import org.springframework.boot.autoconfigure.jdbc.datasourcebuilder;
import org.springframework.boot.context.properties.configurationproperties;
import org.springframework.context.annotation.bean;
import org.springframework.context.annotation.configuration;
import org.springframework.context.annotation.primary;
import org.springframework.core.io.support.pathmatchingresourcepatternresolver;

import javax.sql.datasource;

@configuration
@mapperscan(basepackages = "com.master.*", sqlsessionfactoryref = "mastersqlsessionfactory")
public class mybatisconfigmaster {

/**
* 将这个对象放入spring容器中
* @return
*/
@bean(name = "masterdatasource")
/**
* 表示这个数据源是默认数据源
*/
@primary
/**
* 读取application.properties中的配置参数映射成为一个对象
*/
/**
* prefix表示参数的前缀
*/
@configurationproperties(prefix = "spring.datasource.master")
public datasource getmasterdatasource() {
return datasourcebuilder.create().build();
}
@bean(name = "mastersqlsessionfactory")
/**
* 表示这个数据源是默认数据源
*/
@primary
/**
* @qualifier表示查找spring容器中名字为masterdatasource的对象
*/
public sqlsessionfactory mastersqlsessionfactory(@qualifier("masterdatasource") datasource datasource)
throws exception {
sqlsessionfactorybean bean = new sqlsessionfactorybean();
bean.setdatasource(datasource);
bean.setmapperlocations(
// 设置mybatis的xml所在位置
new pathmatchingresourcepatternresolver().getresources("classpath:com/master/mapper/**/*.xml"));
return bean.getobject();
}
@bean("mastersqlsessiontemplate")
/**
* 表示这个数据源是默认数据源
*/
@primary
public sqlsessiontemplate mastersqlsessiontemplate(
@qualifier("mastersqlsessionfactory") sqlsessionfactory sessionfactory) {
return new sqlsessiontemplate(sessionfactory);
}
}

从数据源的配置与主数据源类似,只需要把包名、类名、路径名改一下,然后把@primary注解去掉即可。这样数据源就配好了,