[TD-2052]<feature>: common java connection pools examples
This commit is contained in:
parent
9bfa0c8eb8
commit
11f1e7810a
|
@ -0,0 +1,12 @@
|
|||
这个example中,我们适配了java常见的连接池:
|
||||
* c3p0
|
||||
* dbcp
|
||||
* druid
|
||||
* HikariCP
|
||||
|
||||
如何运行这个例子:
|
||||
```shell script
|
||||
|
||||
|
||||
|
||||
```
|
|
@ -8,12 +8,11 @@
|
|||
<artifactId>connectionPools</artifactId>
|
||||
<version>1.0-SNAPSHOT</version>
|
||||
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>com.taosdata.jdbc</groupId>
|
||||
<artifactId>taos-jdbcdriver</artifactId>
|
||||
<version>2.0.10</version>
|
||||
<version>2.0.11</version>
|
||||
</dependency>
|
||||
|
||||
<!-- druid -->
|
||||
|
@ -39,6 +38,12 @@
|
|||
<artifactId>commons-dbcp</artifactId>
|
||||
<version>1.4</version>
|
||||
</dependency>
|
||||
<!-- c3p0 -->
|
||||
<dependency>
|
||||
<groupId>com.mchange</groupId>
|
||||
<artifactId>c3p0</artifactId>
|
||||
<version>0.9.5.2</version>
|
||||
</dependency>
|
||||
|
||||
<!-- log4j -->
|
||||
<dependency>
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
package com.taosdata.demo;
|
||||
|
||||
import com.taosdata.demo.common.InsertTask;
|
||||
import com.taosdata.demo.pool.C3p0Builder;
|
||||
import com.taosdata.demo.pool.DbcpBuilder;
|
||||
import com.taosdata.demo.pool.DruidPoolBuilder;
|
||||
import com.taosdata.demo.pool.HikariCpBuilder;
|
||||
|
@ -17,17 +18,18 @@ import java.util.concurrent.TimeUnit;
|
|||
public class ConnectionPoolDemo {
|
||||
|
||||
private static Logger logger = Logger.getLogger(DruidPoolBuilder.class);
|
||||
private static final String dbName = "pool_test";
|
||||
|
||||
private static int batchSize = 10;
|
||||
private static int sleep = 1000;
|
||||
private static int poolSize = 50;
|
||||
private static int tableSize = 1000;
|
||||
private static int threadCount = 50;
|
||||
private static final String dbName = "pool_test";
|
||||
private static String poolType = "hikari";
|
||||
|
||||
|
||||
public static void main(String[] args) throws InterruptedException {
|
||||
String host = null;
|
||||
|
||||
for (int i = 0; i < args.length; i++) {
|
||||
if ("-host".equalsIgnoreCase(args[i]) && i < args.length - 1) {
|
||||
host = args[++i];
|
||||
|
@ -44,6 +46,9 @@ public class ConnectionPoolDemo {
|
|||
if ("-tableSize".equalsIgnoreCase(args[i]) && i < args.length - 1) {
|
||||
tableSize = Integer.parseInt(args[++i]);
|
||||
}
|
||||
if ("-poolType".equalsIgnoreCase(args[i]) && i < args.length - 1) {
|
||||
poolType = args[++i];
|
||||
}
|
||||
}
|
||||
if (host == null) {
|
||||
System.out.println("Usage: java -jar XXX.jar " +
|
||||
|
@ -51,13 +56,29 @@ public class ConnectionPoolDemo {
|
|||
"-batchSize <batchSize> " +
|
||||
"-sleep <sleep> " +
|
||||
"-poolSize <poolSize> " +
|
||||
"-tableSize <tableSize>");
|
||||
"-tableSize <tableSize>" +
|
||||
"-poolType <c3p0| dbcp| druid| hikari>");
|
||||
return;
|
||||
}
|
||||
|
||||
// DataSource dataSource = DbcpBuilder.getDataSource(host, poolSize);
|
||||
// DataSource dataSource = DruidPoolBuilder.getDataSource(host, poolSize);
|
||||
DataSource dataSource = HikariCpBuilder.getDataSource(host, poolSize);
|
||||
DataSource dataSource;
|
||||
switch (poolType) {
|
||||
case "c3p0":
|
||||
dataSource = C3p0Builder.getDataSource(host, poolSize);
|
||||
break;
|
||||
case "dbcp":
|
||||
dataSource = DbcpBuilder.getDataSource(host, poolSize);
|
||||
break;
|
||||
case "druid":
|
||||
dataSource = DruidPoolBuilder.getDataSource(host, poolSize);
|
||||
break;
|
||||
case "hikari":
|
||||
default:
|
||||
dataSource = HikariCpBuilder.getDataSource(host, poolSize);
|
||||
poolType = "hikari";
|
||||
}
|
||||
|
||||
logger.info(">>>>>>>>>>>>>> connection pool Type: " + poolType);
|
||||
|
||||
init(dataSource);
|
||||
|
||||
|
@ -78,7 +99,7 @@ public class ConnectionPoolDemo {
|
|||
for (int tb_ind = 1; tb_ind <= tableSize; tb_ind++) {
|
||||
execute(conn, "create table t_" + tb_ind + " using weather tags('beijing'," + (tb_ind + 1) + ")");
|
||||
}
|
||||
System.out.println(">>>>>>>>>>>>>>>>>>>>>>>>>>>> init finished.");
|
||||
logger.info(">>>>>>>>>>>>>>>>>>>>>>>>>>>> init finished.");
|
||||
} catch (SQLException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
|
|
@ -10,7 +10,7 @@ import java.util.Random;
|
|||
|
||||
public class InsertTask implements Runnable {
|
||||
private final Random random = new Random(System.currentTimeMillis());
|
||||
private static Logger logger = Logger.getLogger(InsertTask.class);
|
||||
private static final Logger logger = Logger.getLogger(InsertTask.class);
|
||||
|
||||
private final DataSource ds;
|
||||
private final int batchSize;
|
||||
|
@ -37,14 +37,23 @@ public class InsertTask implements Runnable {
|
|||
|
||||
for (int tb_index = 1; tb_index <= tableSize; tb_index++) {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.append("insert into " + dbName + ".t_" + tb_index + "(ts, temperature, humidity) values ");
|
||||
sb.append("insert into ");
|
||||
sb.append(dbName);
|
||||
sb.append(".t_");
|
||||
sb.append(tb_index);
|
||||
sb.append("(ts, temperature, humidity) values ");
|
||||
for (int i = 0; i < batchSize; i++) {
|
||||
sb.append("(" + (start + i) + ", " + (random.nextFloat() * 30) + ", " + (random.nextInt(70)) + ") ");
|
||||
sb.append("(");
|
||||
sb.append(start + i);
|
||||
sb.append(", ");
|
||||
sb.append(random.nextFloat() * 30);
|
||||
sb.append(", ");
|
||||
sb.append(random.nextInt(70));
|
||||
sb.append(") ");
|
||||
}
|
||||
logger.info("SQL >>> " + sb.toString());
|
||||
affectedRows += stmt.executeUpdate(sb.toString());
|
||||
}
|
||||
|
||||
} catch (SQLException e) {
|
||||
e.printStackTrace();
|
||||
} finally {
|
||||
|
@ -52,6 +61,7 @@ public class InsertTask implements Runnable {
|
|||
try {
|
||||
stmt.close();
|
||||
} catch (SQLException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
if (conn != null) {
|
||||
|
|
|
@ -0,0 +1,28 @@
|
|||
package com.taosdata.demo.pool;
|
||||
|
||||
import com.mchange.v2.c3p0.ComboPooledDataSource;
|
||||
import org.apache.commons.dbcp.BasicDataSource;
|
||||
|
||||
import javax.sql.DataSource;
|
||||
import java.beans.PropertyVetoException;
|
||||
|
||||
public class C3p0Builder {
|
||||
|
||||
public static DataSource getDataSource(String host, int poolSize) {
|
||||
ComboPooledDataSource ds = new ComboPooledDataSource();
|
||||
|
||||
try {
|
||||
ds.setDriverClass("com.taosdata.jdbc.TSDBDriver");
|
||||
} catch (PropertyVetoException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
ds.setJdbcUrl("jdbc:TAOS://" + host + ":6030");
|
||||
ds.setUser("root");
|
||||
ds.setPassword("taosdata");
|
||||
|
||||
ds.setMinPoolSize(poolSize);
|
||||
ds.setMaxPoolSize(poolSize);
|
||||
ds.setAcquireIncrement(5);
|
||||
return ds;
|
||||
}
|
||||
}
|
|
@ -1 +0,0 @@
|
|||
app.insertBatchSize=50
|
Loading…
Reference in New Issue