其实通常ck集群是要配置负载均衡地址的,但是如果不行,那么就需要配置集群具体分片地址。
pom文件配置
<dependency>
<groupid>com.alibaba</groupid>
<artifactid>druid-spring-boot-starter</artifactid>
<version>1.2.20</version> <!-- 推荐 1.2.8+ -->
</dependency>
<dependency>
<groupid>com.clickhouse</groupid>
<artifactid>clickhouse-jdbc</artifactid>
<version>0.3.2-patch11</version>
</dependency>
<!-- 添加 lz4 依赖 -->
<dependency>
<groupid>org.lz4</groupid>
<artifactid>lz4-java</artifactid>
<version>1.8.0</version>
</dependency>
yml配置:
clickhouse:
type: com.alibaba.druid.pool.druiddatasource
driver-class-name: com.alibaba.druid.support.clickhouse.balancedclickhousedriver
url: jdbc:clickhouse://ip:port,ip:port..../database
username: root
password: 123456
druid:
initial-size: 5
min-idle: 5
max-active: 20
max-wait: 60000
time-between-eviction-runs-millis: 60000
min-evictable-idle-time-millis: 300000
test-while-idle: true
test-on-borrow: false
test-on-return: false
配置类
package com.jane.config;
import com.alibaba.druid.pool.druiddatasource;
import com.baomidou.mybatisplus.core.mybatisconfiguration;
import com.baomidou.mybatisplus.extension.spring.mybatissqlsessionfactorybean;
import lombok.requiredargsconstructor;
import org.apache.ibatis.session.sqlsessionfactory;
import org.mybatis.spring.annotation.mapperscan;
import org.springframework.beans.factory.annotation.qualifier;
import org.springframework.beans.factory.annotation.value;
import org.springframework.context.annotation.bean;
import org.springframework.context.annotation.configuration;
import org.springframework.core.io.support.pathmatchingresourcepatternresolver;
import org.springframework.jdbc.datasource.datasourcetransactionmanager;
import javax.sql.datasource;
import java.sql.sqlexception;
@configuration
@mapperscan(basepackages = clickhousedatasourceconfig.package, sqlsessionfactoryref = "cksessionfactory")
@requiredargsconstructor
public class clickhousedatasourceconfig {
static final string package = "com.jane.mapper";
static final string mapper_location = "classpath*:/mapper/ck/*.xml";
static final string type_aliases_package = "com.jane.entity";
@value("${spring.clickhouse.url}")
private string url;
@value("${spring.clickhouse.username}")
private string username;
@value("${spring.clickhouse.password}")
private string password;
@value("${spring.clickhouse.driver-class-name}")
private string driverclass;
@value("${spring.clickhouse.druid.initial-size:5}")
private integer initialsize;
@value("${spring.clickhouse.druid.min-idle:5}")
private integer minidle;
@value("${spring.clickhouse.druid.max-active:20}")
private integer maxactive;
@value("${spring.clickhouse.druid.max-wait:60000}")
private integer maxwait;
@value("${spring.clickhouse.druid.time-between-eviction-runs-millis:60000}")
private long timebetweenevictionrunsmillis;
@value("${spring.clickhouse.druid.min-evictable-idle-time-millis:300000}")
private long minevictableidletimemillis;
@value("${spring.clickhouse.druid.test-while-idle:true}")
private boolean testwhileidle;
@value("${spring.clickhouse.druid.test-on-borrow:false}")
private boolean testonborrow;
@value("${spring.clickhouse.druid.test-on-return:false}")
private boolean testonreturn;
@bean(name = "ckdatasource")
public datasource ckdatasource() throws sqlexception {
druiddatasource datasource = new druiddatasource();
// 基本配置
datasource.setdriverclassname(driverclass);
datasource.seturl(url);
datasource.setusername(username);
datasource.setpassword(password);
// 连接池大小配置
datasource.setinitialsize(initialsize);
datasource.setminidle(minidle);
datasource.setmaxactive(maxactive);
datasource.setmaxwait(maxwait);
// 连接检测配置
datasource.settimebetweenevictionrunsmillis(timebetweenevictionrunsmillis);
datasource.setminevictableidletimemillis(minevictableidletimemillis);
datasource.settestwhileidle(testwhileidle);
datasource.settestonborrow(testonborrow);
datasource.settestonreturn(testonreturn);
// 连接验证sql
datasource.setvalidationquery("select 1");
// 初始化连接池
datasource.init();
return datasource;
}
@bean(name = "cksessionfactory")
public sqlsessionfactory cksessionfactory(@qualifier("ckdatasource") datasource ckdatasource)
throws exception {
mybatissqlsessionfactorybean bean = new mybatissqlsessionfactorybean();
bean.setdatasource(ckdatasource);
// 设置mapper xml文件位置
bean.setmapperlocations(new pathmatchingresourcepatternresolver().getresources(mapper_location));
// 设置实体类别名包
bean.settypealiasespackage(type_aliases_package);
// 配置mybatis设置
mybatisconfiguration configuration = new mybatisconfiguration();
configuration.setmapunderscoretocamelcase(true); // 开启驼峰命名转换
bean.setconfiguration(configuration);
return bean.getobject();
}
@bean(name = "cktransactionmanager")
public datasourcetransactionmanager cktransactionmanager(
@qualifier("ckdatasource") datasource ckdatasource) {
return new datasourcetransactionmanager(ckdatasource);
}
}
以上就是springboot整合clickhouse配置多分片地址的示例详解的详细内容,更多关于springboot clickhouse配置多分片地址的资料请关注代码网其它相关文章!
发表评论