druid数据源没有优雅关闭接口?

csbfibhn  于 4个月前  发布在  Druid
关注(0)|答案(7)|浏览(69)

背景:项目中有使用阻塞队列,当停机/发版时,要保障队列数据全部消费完,写数据库成功,最后才关闭销毁DruidDataSource实例。
问题:会出现数据源过早关闭的情况,异常如下

{dataSource-1} closed
Caused by: org.springframework.transaction.CannotCreateTransactionException: Could not open JDBC Connection for transaction; nested exception is com.alibaba.druid.pool.DataSourceClosedException: dataSource already closed at xx2019

分析:调用了 DruidDataSource.close() 方法。

没找到closeHook()方法,或许这个场景需要自行去做关闭动作,需要类似lifecycle的功能,这样可以在”关闭前/后“做定制。

@wenshao@lihengming 大神,如何破

vuv7lop3

vuv7lop31#

同问,同需要这个功能,我的业务场景是自行维护全局的DataSource,其中配置是可以在线动态更改的,一旦检测到配置更改,将会干掉原来的DataSource,重新搞个新的,但这就得保证旧的DataSource能正常释放资源,并且不是强行关闭已有连接后回收资源,而是等待已有连接自行关闭后再回收资源

igsr9ssn

igsr9ssn2#

@wenshao 这个特性我们也有类似需求,有没有计划做这个事情啊

cwdobuhd

cwdobuhd4#

i have the same problem

elcex8rz

elcex8rz6#

I have the same issue,our services need to chang db user & pwd at runtime, and could not interrupt business and with no db errors.

quhf5bfb

quhf5bfb7#

这个特性我们也需要。。。麻烦不要在工具内部自己关,提供接口给用户自己关闭吧。。

相关问题