searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

DruidDatasource重试源码分析

2023-08-02 08:10:41
16
0

Druid是我们项目中常见的数据库连接工具,为了保证业务的稳定,我们需要有一个能够尝试重连的连接。而DruidDatasource参数仅通过名字很难确认它具体的工作原理。所以接下来本文将通过源码解读,来分析应该如何配置Druid重连部分的参数。

如下图所示,可以看到,当我们配置好一个DruidDatasource时,其任务会持续尝试创建连接。

在Druid尝试建立物理连接失败且捕获到异常时,errorCount错误次数会增加。在下面的判断条件中有connectionErrorRetryAttempts错误重试次数和timeBetweenConnectErrorMillis错误间隔时间两个我们常用的重试配置参数。通过源码可知,当错误重试次数超过connectionErrorRetryAttempts,并且重试间隔大于0时,

Druid会进入if判断中的逻辑。

如果我们将breakAfterAcquireFailure设置为true,那么当异常失败次数达到connectionErrorRetryAttempts时,Druid将会清除当前建立连接的线程。停止持续重试建立连接。

如果设置breakAfterAcquireFailure为false,Druid连接池会设置一个调度器,在配置的timeBetweenConnectErrorMillis参数后定时重新创建任务,重新尝试建立连接。并且销毁当前线程不再进行重试。

综上所述,我们可以知道有关于数据库连接重试的参数主要有connectionErrorRetryAttempts:连接错误重试次数,timeBetweenConnectErrorMillis:连接错误重试间隔时间,breakAfterAcquireFailure:获取连接失败后是否中断。

当我们需要连接稳定运行时,可以配置breakAfterAcquireFailure为false,并根据自身业务需求和网络环境来配置connectionErrorRetryAttempts,timeBetweenConnectErrorMillis。让其在可控的频次下进行恢复重连。

0条评论
0 / 1000
朱承禹
4文章数
0粉丝数
朱承禹
4 文章 | 0 粉丝
朱承禹
4文章数
0粉丝数
朱承禹
4 文章 | 0 粉丝
原创

DruidDatasource重试源码分析

2023-08-02 08:10:41
16
0

Druid是我们项目中常见的数据库连接工具,为了保证业务的稳定,我们需要有一个能够尝试重连的连接。而DruidDatasource参数仅通过名字很难确认它具体的工作原理。所以接下来本文将通过源码解读,来分析应该如何配置Druid重连部分的参数。

如下图所示,可以看到,当我们配置好一个DruidDatasource时,其任务会持续尝试创建连接。

在Druid尝试建立物理连接失败且捕获到异常时,errorCount错误次数会增加。在下面的判断条件中有connectionErrorRetryAttempts错误重试次数和timeBetweenConnectErrorMillis错误间隔时间两个我们常用的重试配置参数。通过源码可知,当错误重试次数超过connectionErrorRetryAttempts,并且重试间隔大于0时,

Druid会进入if判断中的逻辑。

如果我们将breakAfterAcquireFailure设置为true,那么当异常失败次数达到connectionErrorRetryAttempts时,Druid将会清除当前建立连接的线程。停止持续重试建立连接。

如果设置breakAfterAcquireFailure为false,Druid连接池会设置一个调度器,在配置的timeBetweenConnectErrorMillis参数后定时重新创建任务,重新尝试建立连接。并且销毁当前线程不再进行重试。

综上所述,我们可以知道有关于数据库连接重试的参数主要有connectionErrorRetryAttempts:连接错误重试次数,timeBetweenConnectErrorMillis:连接错误重试间隔时间,breakAfterAcquireFailure:获取连接失败后是否中断。

当我们需要连接稳定运行时,可以配置breakAfterAcquireFailure为false,并根据自身业务需求和网络环境来配置connectionErrorRetryAttempts,timeBetweenConnectErrorMillis。让其在可控的频次下进行恢复重连。

文章来自个人专栏
从零开始学习数据库
4 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
0
0