如何从spring cloud函数中发现您与数据库建立的连接已关闭



在spring-cloud函数的使用中,您不希望数据库连接保持在数据库中。一旦spring-cloud函数完成其过程,以下关闭函数的方法合适吗?

HikariDataSource ds = (HikariDataSource) applicationContext.getBean(HikariDataSource.class);
if (ds != null) {
ds.close();
}

即使我们不执行上面的实现,我们如何验证spring-cloud函数是否固有地关闭了连接?我看到下面的日志表明连接池已关闭,但数据库的连接仍在增长,表明连接未正确关闭。我们如何确保在spring-cloud功能实现完成后关闭连接?

INFO 22336 --- [extShutdownHook] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Shutdown initiated...
INFO 22336 --- [extShutdownHook] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Shutdown completed.

显式关闭lambda函数中的hikari池有帮助。Spring正在关闭连接,但lambda立即关闭,RDS无法正确关闭连接。

lambda函数最好简单,不要与多个函数打包在一个repo中。lambda执行后,可以关闭连接,如下例所示。关闭数据源本质上会关闭连接。我不确定为什么我们需要明确地关闭它,并且仍然希望spring能够正确地关闭连接,但这起到了作用。

if (yourDatasource != null) {
yourDatasource .close();
}

最新更新