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

How can you find out from spring cloud function that the connection you established to the database is closed?

在 spring 云函数使用中,您不希望数据库连接保持存在于数据库中。 spring 云函数完成其进程后,以下关闭函数的方法是否合适?

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

即使我们不执行上述实现,我们如何验证 spring 云函数是否会固有地关闭连接?我看到下面的日志表明连接池已关闭,而且数据库不断增加其连接,表明连接未正确关闭。我们如何确保在 spring 云功能实现完成后关闭连接?

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 函数简单一些,而不是将多个函数打包在一个存储库中。 lambda 执行后,可以关闭连接,如下例所示。关闭数据源本质上会关闭连接。我不确定为什么我们需要显式关闭它并且仍然希望 spring 正确关闭连接,但这有效。

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