我是Hibernate / JPA的新手,我正在开发一个应用程序,我收到来自Message Broker的请求(100-200个请求/秒)&并在期货/线程中处理它,我正在为每个线程创建一个新的EntityManager。最初,当JPA开始抛出有关“太多SQL连接”的错误时,我将hikariCP包含在连接池中,之后我只能处理等于池大小的请求数。以下是我的数据库代码
def withTransaction(callback: (EntityManager) => Any) = {
val entityManager = entityFactory.createEntityManager()
try {
entityManager.getTransaction.begin()
callback(entityManager)
entityManager.getTransaction.commit()
} finally {
entityManager.close()
}
}
我的hikari配置如下
<property name="hibernate.connection.provider_class" value="com.zaxxer.hikari.hibernate.HikariConnectionProvider" />
<property name="hibernate.hikari.minimumIdle" value="30" />
<property name="hibernate.hikari.maximumPoolSize" value="5" />
<property name="hibernate.hikari.idleTimeout" value="30000" />
<property name="hibernate.hikari.connectionTimeout" value="300000000" />
<property name="hibernate.hikari.dataSourceClassName" value="com.mysql.jdbc.jdbc2.optional.MysqlDataSource" />
<property name="hibernate.hikari.dataSource.url" value="jdbc:mysql://--" />
<property name="hibernate.hikari.dataSource.user" value="--" />
<property name="hibernate.hikari.dataSource.password" value="--" />