首页 > 解决方案 > 冲刺重试:org.hibernate.exception.JDBCConnectionException

问题描述

在重负载期间,我们一直面临应用程序与数据库通信的问题,并且间歇性地我们开始收到引发异常的超时错误:org.hibernate.exception.JDBCConnectionException

对于可恢复的异常,我们已经成功使用 Spring JDBCretry 来解决此类问题。现在我们想将此扩展org.hibernate.exception.JDBCConnectionException为不可恢复的异常,而 Spring JDBCRetry 仅适用于可恢复的异常。

关于如何重试此异常的任何建议。

以下是我们对可恢复异常的实现:

<bean id="dsRetryTemplate" class="org.springframework.retry.support.RetryTemplate">
        <property name="retryPolicy" ref="dsRetryPolicy"/>
        <property name="backOffPolicy" ref="dsBackOffPolicy"/>
        <property name="listeners" ref="dsRetryListeners"/>
    </bean>

    <bean id="dsRetryPolicy" class="org.springframework.data.jdbc.retry.JdbcRetryPolicy"
          p:maxNumberOfRetries="${datasource.retry.maxNumberOfRetries:5}">
        <property name="recoverableErrorCodes">
            <array>
                <value>17002</value>
                <value>12516</value>
                <value>12518</value>
            </array>
        </property>
    </bean>

    <bean id="dsBackOffPolicy" class="org.springframework.retry.backoff.ExponentialBackOffPolicy"
          p:initialInterval="${aws.task.retry.initialInterval:2000}"/>

标签: javaspringoraclespring-retry

解决方案


推荐阅读