当前位置: 代码网 > it编程>编程语言>Java > SpringBoot整合clickhouse配置多分片地址的示例详解

SpringBoot整合clickhouse配置多分片地址的示例详解

2025年10月31日 Java 我要评论
其实通常ck集群是要配置负载均衡地址的,但是如果不行,那么就需要配置集群具体分片地址。pom文件配置<dependency> <groupid>com.alibaba&

其实通常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配置多分片地址的资料请关注代码网其它相关文章!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com