guava-retrying 源码解析(阻塞策略详解)

Posted shenqidu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了guava-retrying 源码解析(阻塞策略详解)相关的知识,希望对你有一定的参考价值。

这是一种策略,用于决定重试者应如何在重试尝试之间进行阻止。通常这只是一个thread.sleep(),但是如果需要的话,实现可能更复杂。

一、阻塞策略相关的类或接口

1、阻塞策略接口:BlockStrategy

  底层默认使用来 Thread.sleep 完成线程阻塞,从而实现重试之间的等待{@link com.github.rholder.retry.WaitStrategy}。如果需要,实现可以更加复杂。

接口里面有一个实现方法,如下。

    技术图片

2、阻塞策略工厂类:BlockStrategies。

  该工厂类非常简单,里面只有一个阻塞策略实现类(ThreadSleepStrategy),并且该实现类只有一个默认构造方法,因此该工厂类也就只提供了一个工厂方法用于创建ThreadSleepStrategy实例。

二、阻塞策略ThreadSleepStrategy详解

  该类非常简单,只有一个方法,如下,也正是通过该方法完成了两次重试之间的阻塞:

// 阻塞逻辑是通过线程休眠实现的
@Override
public void block(long sleepTime) throws InterruptedException {
    Thread.sleep(sleepTime);
}

 

这样其实就可以和 WaitStrategy策略串起来了,WaitStrategy为阻塞策略提供了阻塞时间。

 

以上是关于guava-retrying 源码解析(阻塞策略详解)的主要内容,如果未能解决你的问题,请参考以下文章

guava-retrying 源码解析(时间限制策略)

聊聊重试框架用Guava-Retry

聊聊重试框架用Guava-Retry

Spring-Retry 和 Guava-Retry

Struts2 <s:doubleselect;级联下拉框 详解析

SpringBoot 消息重试框架 spring-retry 和 guava-retry 详解