【问题标题】:Spring Retry for Dao ClassDao 类的 Spring 重试
【发布时间】:2020-09-26 12:10:25
【问题描述】:

我有以下代码 春季启动版本:2.3.4

@Repository
class Dbrepository
{


public void performCall() {

 simpleJdbcCall = new 
               SimpleJdbcCall(jdbcTemplate) 
               .withProcedureName("read_actor")
             //.....
  
    simpleJdbcCall.execute(...) ;
}

}

我想在每次调用之间以 1 分钟的间隔重试 performCall() 至少 3 次。 我怎样才能做到这一点? 我正在考虑使用 Spring Retry 吗?这是最好的方法吗?

【问题讨论】:

    标签: spring spring-boot jdbc spring-data-jpa connection-pooling


    【解决方案1】:

    可以通过添加spring-retry来实现

       <dependency>
            <groupId>org.springframework.retry</groupId>
            <artifactId>spring-retry</artifactId>
        </dependency>
    

    在您的主应用程序中添加@EnableRetry

    @Retryable(maxAttempts=3,backoff=@Backoff(delay = 10000))
    public void performCall() {
    
     simpleJdbcCall = new 
                   SimpleJdbcCall(jdbcTemplate) 
                   .withProcedureName("read_actor")
                 //.....
      
        simpleJdbcCall.execute(...) ;
    }
    

    希望有用

    【讨论】:

    • @EnableRetry 注释应该添加到他的@Configuration 类中。将下面的块放在重试功能之外怎么样? simpleJdbcCall = new SimpleJdbcCall(jdbcTemplate).withProcedureName("read_actor")
    • 我不明白你的问题你说的外面是什么意思
    • 他是否需要在每次重试时重新创建SimpleJdbcCall
    • @M.Mas.我在另一种方法中已经有了。上面的代码只是示例代码
    • @A.khalifa 我如何仅针对数据库连接问题重试,仅此而已。我应该提到哪个例外
    猜你喜欢
    • 2013-01-16
    • 1970-01-01
    • 2013-02-06
    • 2012-12-22
    • 1970-01-01
    • 2013-01-24
    • 1970-01-01
    • 2011-07-21
    • 2013-12-28
    相关资源
    最近更新 更多