教程:通过Druid连接池连接并访问时序引擎
本文介绍通过Druid连接池连接并访问时序引擎的方法。
背景信息
使用Java开发访问时序引擎的应用程序时,通常建议通过JDBC Driver连接Lindorm时序引擎。JDBC访问逻辑的基础是需要创建Connection对象,如果每次连接时序引擎都创建一个新的Connection对象,会带来很大的开销。为了降低开销,可以使用连接池来执行连接的创建和管理。
前提条件
操作步骤
以开源连接池Alibaba Druid为例。
在Maven项目中添加Druid连接池的依赖。打开客户端,创建Project并在pom.xml中配置Maven依赖。示例代码如下:
<dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.2.6</version> </dependency>
通过以下两种方式安装Lindorm JDBC Driver依赖。
手动安装。
在本地自行下载JAR包集成JDBC Driver,下载链接为:Lindorm-all-client。选择需要安装的版本,以2.1.2为例,下载lindorm-all-client-2.1.2.jar包。
通过Maven下载。
如果在Maven项目中集成JDBC Driver,创建Project并在pom.xml中添加以下依赖配置,具体内容如下:
<dependency> <groupId>com.aliyun.lindorm</groupId> <artifactId>lindorm-all-client</artifactId> <version>2.1.2</version> </dependency>
说明lindorm-all-client的版本号根据需求填写。
创建DataSource对象,基于DataSource创建JDBC Connection并访问Lindorm时序引擎。示例代码如下:
import com.alibaba.druid.pool.DruidDataSource; import java.sql.*; public class App { private DruidDataSource dataSource; public void setUp() { dataSource = new DruidDataSource(); try { dataSource.setDriver(DriverManager.getDriver("jdbc:lindorm:tsdb:url=http://ld-bp17j28j2y7pm****-proxy-tsdb-pub.lindorm.rds.aliyuncs.com:8242"));//此处为控制台上获取的连接地址 dataSource.setUrl("jdbc:lindorm:tsdb:url=http://ld-bp17j28j2y7pm****-proxy-tsdb-pub.lindorm.rds.aliyuncs.com:8242");//此处为控制台上获取的连接地址 dataSource.setValidationQuery("select 1"); dataSource.setMaxActive(1); dataSource.setUsername("username");//此处为默认用户名或用户创建的用户名 dataSource.setPassword("****");//此处为默认密码或用户创建的密码 dataSource.setKeepAlive(true); dataSource.setMinEvictableIdleTimeMillis(80); dataSource.setMaxWait(10000); dataSource.init(); } catch (SQLException throwables) { throwables.printStackTrace(); } } public void close() { dataSource.close(); } public void testQuery() { try (Connection conn = this.dataSource.getConnection()) { try (Statement stmt = conn.createStatement()) { ResultSet rs = stmt.executeQuery("select * from sensor"); long count = 0; while (rs.next()) { count++; } System.out.println("count=" + count + " "); } catch (RuntimeException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } } catch (RuntimeException e) { System.out.println("connection failed."); e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } } public static void main( String[] args ) { App app = new App(); app.setUp(); app.testQuery(); app.close(); } }
说明JDBC连接地址相关参数说明,请参见JDBC连接地址说明。
默认用户名及密码均为root。