文档

教程:通过Druid连接池连接并访问时序引擎

更新时间:

本文介绍通过Druid连接池连接并访问时序引擎的方法。

背景信息

使用Java开发访问时序引擎的应用程序时,通常建议通过JDBC Driver连接Lindorm时序引擎。JDBC访问逻辑的基础是需要创建Connection对象,如果每次连接时序引擎都创建一个新的Connection对象,会带来很大的开销。为了降低开销,可以使用连接池来执行连接的创建和管理。

前提条件

  • 已安装Java环境,要求安装JDK 1.8及以上版本。

  • 已将客户端IP地址添加至Lindorm白名单,具体操作,请参见设置白名单

操作步骤

以开源连接池Alibaba Druid为例。

  1. 在Maven项目中添加Druid连接池的依赖。打开客户端,创建Project并在pom.xml中配置Maven依赖。示例代码如下:

    <dependency>
          <groupId>com.alibaba</groupId>
          <artifactId>druid</artifactId>
          <version>1.2.6</version>
        </dependency>
  2. 通过以下两种方式安装Lindorm JDBC Driver依赖。

    • 手动安装。

      在本地自行下载JAR包集成JDBC Driver,下载链接为:Lindorm-all-client。选择需要安装的版本,以2.1.5为例,下载lindorm-all-client-2.1.5.jar包。

    • 通过Maven下载。

      如果在Maven项目中集成JDBC Driver,创建Project并在pom.xml中添加以下依赖配置,具体内容如下:

      <dependency>
          <groupId>com.aliyun.lindorm</groupId>  
          <artifactId>lindorm-all-client</artifactId>
          <version>2.2.1</version>
      </dependency>
      说明

      lindorm-all-client的版本号根据需求填写。

  3. 创建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 {
              //此处修改为控制台上获取的Lindorm 时序SQL地址
                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("testpw"); 
            		dataSource.setKeepAlive(true);
            		dataSource.setMinEvictableIdleTimeMillis(600000);
           			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();
        }
    }
    说明
  • 本页导读 (1)
文档反馈