【发布时间】:2017-12-24 06:29:44
【问题描述】:
技术栈
我正在使用 spring boot 1.3.5 作为休息服务,它在内部从数据库中获取数据。使用的 ORM 是 JOOQ,连接池管理由 BoneCP 完成......
要求
我有一个要求,我需要触发多个 sql 来获取数据,组合结果并将它们全部返回......
问题
我已经使用 spring async 实现了这一点,但是遇到了 spring sync 方法阻止数据库连接并且没有将它们释放到数据库池的问题。在几次点击后达到最大连接并且应用程序停止响应......
试试
一旦我从我的方法中删除 @Async 注释,它就可以正常工作..
请提出一个可能的解决方案来解决这个问题,我需要触发多个查询并组合结果。 如果bonecp中有任何设置在超时后将连接释放回池,那么如果有人帮助我,这也是另一种解决方案。
【问题讨论】:
-
“spring sync 方法阻塞了数据库连接”的原因是什么?是长时间运行的进程吗?
-
查询运行时间不长..但结果已传递但数据库连接未释放回池
-
你不是在执行查询后调用
connection.close()返回连接池吗? -
如前所述,我将 boncep 与 spring boot 一起使用,因此打开连接和关闭由数据库池自动处理。我正在打开一个连接,因此无法关闭连接。
标签: spring multithreading jooq bonecp spring-async