[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>
|
<artifactId>connectionPools</artifactId>
|
||||||
<version>1.0-SNAPSHOT</version>
|
<version>1.0-SNAPSHOT</version>
|
||||||
|
|
||||||
|
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.taosdata.jdbc</groupId>
|
<groupId>com.taosdata.jdbc</groupId>
|
||||||
<artifactId>taos-jdbcdriver</artifactId>
|
<artifactId>taos-jdbcdriver</artifactId>
|
||||||
<version>2.0.10</version>
|
<version>2.0.11</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<!-- druid -->
|
<!-- druid -->
|
||||||
|
@ -39,6 +38,12 @@
|
||||||
<artifactId>commons-dbcp</artifactId>
|
<artifactId>commons-dbcp</artifactId>
|
||||||
<version>1.4</version>
|
<version>1.4</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<!-- c3p0 -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.mchange</groupId>
|
||||||
|
<artifactId>c3p0</artifactId>
|
||||||
|
<version>0.9.5.2</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
<!-- log4j -->
|
<!-- log4j -->
|
||||||
<dependency>
|
<dependency>
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
package com.taosdata.demo;
|
package com.taosdata.demo;
|
||||||
|
|
||||||
import com.taosdata.demo.common.InsertTask;
|
import com.taosdata.demo.common.InsertTask;
|
||||||
|
import com.taosdata.demo.pool.C3p0Builder;
|
||||||
import com.taosdata.demo.pool.DbcpBuilder;
|
import com.taosdata.demo.pool.DbcpBuilder;
|
||||||
import com.taosdata.demo.pool.DruidPoolBuilder;
|
import com.taosdata.demo.pool.DruidPoolBuilder;
|
||||||
import com.taosdata.demo.pool.HikariCpBuilder;
|
import com.taosdata.demo.pool.HikariCpBuilder;
|
||||||
|
@ -17,17 +18,18 @@ import java.util.concurrent.TimeUnit;
|
||||||
public class ConnectionPoolDemo {
|
public class ConnectionPoolDemo {
|
||||||
|
|
||||||
private static Logger logger = Logger.getLogger(DruidPoolBuilder.class);
|
private static Logger logger = Logger.getLogger(DruidPoolBuilder.class);
|
||||||
|
private static final String dbName = "pool_test";
|
||||||
|
|
||||||
private static int batchSize = 10;
|
private static int batchSize = 10;
|
||||||
private static int sleep = 1000;
|
private static int sleep = 1000;
|
||||||
private static int poolSize = 50;
|
private static int poolSize = 50;
|
||||||
private static int tableSize = 1000;
|
private static int tableSize = 1000;
|
||||||
private static int threadCount = 50;
|
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 {
|
public static void main(String[] args) throws InterruptedException {
|
||||||
String host = null;
|
String host = null;
|
||||||
|
|
||||||
for (int i = 0; i < args.length; i++) {
|
for (int i = 0; i < args.length; i++) {
|
||||||
if ("-host".equalsIgnoreCase(args[i]) && i < args.length - 1) {
|
if ("-host".equalsIgnoreCase(args[i]) && i < args.length - 1) {
|
||||||
host = args[++i];
|
host = args[++i];
|
||||||
|
@ -44,6 +46,9 @@ public class ConnectionPoolDemo {
|
||||||
if ("-tableSize".equalsIgnoreCase(args[i]) && i < args.length - 1) {
|
if ("-tableSize".equalsIgnoreCase(args[i]) && i < args.length - 1) {
|
||||||
tableSize = Integer.parseInt(args[++i]);
|
tableSize = Integer.parseInt(args[++i]);
|
||||||
}
|
}
|
||||||
|
if ("-poolType".equalsIgnoreCase(args[i]) && i < args.length - 1) {
|
||||||
|
poolType = args[++i];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (host == null) {
|
if (host == null) {
|
||||||
System.out.println("Usage: java -jar XXX.jar " +
|
System.out.println("Usage: java -jar XXX.jar " +
|
||||||
|
@ -51,13 +56,29 @@ public class ConnectionPoolDemo {
|
||||||
"-batchSize <batchSize> " +
|
"-batchSize <batchSize> " +
|
||||||
"-sleep <sleep> " +
|
"-sleep <sleep> " +
|
||||||
"-poolSize <poolSize> " +
|
"-poolSize <poolSize> " +
|
||||||
"-tableSize <tableSize>");
|
"-tableSize <tableSize>" +
|
||||||
|
"-poolType <c3p0| dbcp| druid| hikari>");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// DataSource dataSource = DbcpBuilder.getDataSource(host, poolSize);
|
DataSource dataSource;
|
||||||
// DataSource dataSource = DruidPoolBuilder.getDataSource(host, poolSize);
|
switch (poolType) {
|
||||||
DataSource dataSource = HikariCpBuilder.getDataSource(host, poolSize);
|
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);
|
init(dataSource);
|
||||||
|
|
||||||
|
@ -78,7 +99,7 @@ public class ConnectionPoolDemo {
|
||||||
for (int tb_ind = 1; tb_ind <= tableSize; tb_ind++) {
|
for (int tb_ind = 1; tb_ind <= tableSize; tb_ind++) {
|
||||||
execute(conn, "create table t_" + tb_ind + " using weather tags('beijing'," + (tb_ind + 1) + ")");
|
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) {
|
} catch (SQLException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,7 +10,7 @@ import java.util.Random;
|
||||||
|
|
||||||
public class InsertTask implements Runnable {
|
public class InsertTask implements Runnable {
|
||||||
private final Random random = new Random(System.currentTimeMillis());
|
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 DataSource ds;
|
||||||
private final int batchSize;
|
private final int batchSize;
|
||||||
|
@ -37,14 +37,23 @@ public class InsertTask implements Runnable {
|
||||||
|
|
||||||
for (int tb_index = 1; tb_index <= tableSize; tb_index++) {
|
for (int tb_index = 1; tb_index <= tableSize; tb_index++) {
|
||||||
StringBuilder sb = new StringBuilder();
|
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++) {
|
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());
|
logger.info("SQL >>> " + sb.toString());
|
||||||
affectedRows += stmt.executeUpdate(sb.toString());
|
affectedRows += stmt.executeUpdate(sb.toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
} catch (SQLException e) {
|
} catch (SQLException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
} finally {
|
} finally {
|
||||||
|
@ -52,6 +61,7 @@ public class InsertTask implements Runnable {
|
||||||
try {
|
try {
|
||||||
stmt.close();
|
stmt.close();
|
||||||
} catch (SQLException e) {
|
} catch (SQLException e) {
|
||||||
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (conn != null) {
|
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