spring-data-jpa 未在异步块中释放Hikari CP DB连接

fivyi3re  于 2022-11-10  发布在  Spring
关注(0)|答案(1)|浏览(216)

我正在使用Sping Boot 应用程序,它具有API控制器来生成报告。实际的服务函数是围绕@Async注解 Package 的,函数进行DB调用并生成csv报告。我还使用Hikari CP进行连接池管理,并使用JPA + QueryDSL形成选择查询。
我发现了一个奇怪的问题,即在成功生成文件后,数据库连接没有被释放。每次对控制器/服务函数的新调用都会创建新的活动连接,并且该连接仍处于活动状态。它没有被释放,因为一旦达到我的最大池大小限制,我就会收到来自光的连接不可用错误。
为什么没有释放连接的任何建议。服务功能只发出选择查询,不发出更新或插入。
Hikari CP配置:

spring.datasource.hikari.maximum-pool-size: "80"
spring.datasource.hikari.idle-timeout: "300000"
spring.datasource.hikari.connectionTimeout: "600000"
spring.datasource.hikari.minimum-idle: "15"

我的服务功能

@Async
@Override
public void exportListing(String[] filter) {
        try {
}
catch(Exception e)
{
}
alen0pnh

alen0pnh1#

我通过将它 Package 在@Transactional块中来修复它,这确保了一旦函数完成,DB连接就会关闭。

相关问题