0

我正在将标准 HikariCP 实现与最新的 SpringBoot 应用程序一起使用。场景是这样的。对我的 API 进行了调用,该 API 从 DB 中获取某些内容,然后调用另一个微服务。默认情况下,HikariCP 有 10 个池。对内部微服务的调用最多可能需要 20 分钟才能响应。设想:

External Client -> MyApi -> SomeMicroService <- reponse time 20 minutes.

如果我有 11 个并行请求,我会遇到问题,因为我收到:

HikariPool-1 - 连接不可用,请求在 30000 毫秒后超时

为什么?因为会话关闭后连接返回到池中。

进行数据库调用后有没有办法关闭连接?如果在一个会话中我们有 10 个 JPA 请求正在使用相同的连接,但如果您有 30 个并行调用,则 10 个可以,而 20 个最终会出现错误。

我知道我可以将池从 10 增加到 100,但是还有其他解决方案吗?@Transaction 不工作。连接保持打开状态,直到请求以另一种方式解决。

所以我的问题是:如何在数据库请求/响应发出后释放连接并在需要时创建另一个连接。

我正在使用默认配置的 SpringBoot、SprinJPA、休眠。

提前致谢。

4

0 回答 0