SpringBoot整合clickhouse配置多分片地址的示例详解
作者:流烟默
这篇文章主要为大家详细介绍了SpringBoot整合clickhouse配置多分片地址的相关方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
其实通常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配置多分片地址的资料请关注脚本之家其它相关文章!
