Scala构建数据库连接池
近期项目需要使用scala构建一套日志实时收集分析系统,其中需要把日志记录到Postgresql中,为了解决数据库链接复用,这里介绍下在scala语言中基于alibaba的diruid.pool库构建数据库连接池
先贴代码
package store
import java.sql.Connection
import com.alibaba.druid.pool.DruidDataSource
import config.Configs._
/**
* PgSql 连接工厂
*/
object PgSqlConnection {
private var druidDataSource = new DruidDataSource
def getConnection() = {
druidDataSource.setDriverClassName("org.postgresql.Driver")
// 例:"jdbc:mysql://192.168.0.1:3306/mydbname?serverTimezone=UTC"
druidDataSource.setUrl(PgDbUrl)
druidDataSource.setUsername(PgDbUser)
druidDataSource.setPassword(PgDbPwd)
// 设置连接池的一些参数
// 1.数据库连接池初始化的连接个数
druidDataSource.setInitialSize(50)
// 2.指定最大的连接数,同一时刻可以同时向数据库申请的连接数
druidDataSource.setMaxActive(200)
// 3.指定小连接数:在数据库连接池空闲状态下,连接池中保存的最少的空闲连接数
druidDataSource.setMinIdle(30)
var con:Connection = null
try {
con = druidDataSource.getConnection
System.out.println("创建pgsql连接池:" + con)
} catch {
case e: Exception =>
System.out.println("-----------pgsql get connection has exception , msg = " + e.getMessage + ", trace="+e.getStackTrace)
}
con
}
}
其他JDBC类似,如Mysql连接池下
package store
import java.sql.Connection
import com.alibaba.druid.pool.DruidDataSource
import config.Configs.{DbUrl,DbUser,DbPwd}
/**
* MySql 连接工厂
*/
object MySqlConnection {
private var druidDataSource = new DruidDataSource
def getConnection() = {
druidDataSource.setDriverClassName("com.mysql.jdbc.Driver")
// 例:"jdbc:mysql://192.168.0.1:3306/mydbname?serverTimezone=UTC"
druidDataSource.setUrl(DbUrl)
druidDataSource.setUsername(DbUser)
druidDataSource.setPassword(DbPwd)
// 设置连接池的一些参数
// 1.数据库连接池初始化的连接个数
druidDataSource.setInitialSize(50)
// 2.指定最大的连接数,同一时刻可以同时向数据库申请的连接数
druidDataSource.setMaxActive(200)
// 3.指定小连接数:在数据库连接池空闲状态下,连接池中保存的最少的空闲连接数
druidDataSource.setMinIdle(30)
var con:Connection = null
try {
con = druidDataSource.getConnection
System.out.println("创建mysql连接池:" + con)
} catch {
case e: Exception =>
System.out.println("-----------mysql get connection has exception , msg = " + e.getMessage)
}
con
}
}