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

2019-09-23 09:00:12来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

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

最近在看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注解去掉即可。这样数据源就配好了,


原文链接:https://www.cnblogs.com/sunhaiyang/p/11551347.html
如有疑问请与原作者联系

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:为什么 Java 不是纯面向对象语言?

下一篇:Class.forName()