package com.zdjizhi.utils.ck; import cn.hutool.core.io.IoUtil; import cn.hutool.log.Log; import cn.hutool.log.LogFactory; import ru.yandex.clickhouse.BalancedClickhouseDataSource; import ru.yandex.clickhouse.settings.ClickHouseProperties; import java.sql.Connection; import java.sql.SQLException; import java.util.concurrent.TimeUnit; import static com.zdjizhi.common.FlowWriteConfig.*; public class CKUtils { private static final Log log = LogFactory.get(); private static Connection connection; public static Connection getConnection() { try { ClickHouseProperties props = new ClickHouseProperties(); props.setDatabase(CK_DATABASE); props.setUser(CK_USERNAME); props.setPassword(CK_PIN); props.setConnectionTimeout(CK_CONNECTION_TIMEOUT); props.setSocketTimeout(CK_SOCKET_TIMEOUT); props.setMaxThreads(50); BalancedClickhouseDataSource blDataSource = new BalancedClickhouseDataSource("jdbc:clickhouse://" + CK_HOSTS, props); blDataSource.actualize(); blDataSource.scheduleActualization(10, TimeUnit.SECONDS);//开启检测 // HikariConfig conf = new HikariConfig(); // conf.setDataSource(blDataSource); // conf.setMinimumIdle(1); // conf.setMaximumPoolSize(20); // // HikariDataSource hkDs = new HikariDataSource(conf); connection = blDataSource.getConnection(); log.debug("get clickhouse connection success"); } catch (SQLException e) { log.error("clickhouse connection error ,{}", e); } return connection; } public static void close(Connection connection) throws Exception { IoUtil.close(connection); } }