springBoot,Retry的使⽤SpringBoot提供了Retry机制, 以应对内部发出请求得不到响应, ⽽导致程序执⾏失败的问题
基本逻辑是 ( 以 "捕捉到异常"为条件触发  - -  重试  --  最终补偿策略 )
##导⼊依赖
<!--Spring重试模块-->
<dependency>
<groupId></groupId>
<artifactId>spring-retry</artifactId>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
</dependency>
这⾥写的⽰例, 以数字对⽐作为触发RuntimeException  为⽰例
import util.RandomUtil;
import annotation.Backoff;
import annotation.Recover;
import annotation.Retryable;
import org.springframework.stereotype.Service;
@Service
public class RetryService {
/*
* @Recover的第⼀个参数必须是Throwable ,最好与@Retryable⽅法捕捉的异常相同
*  返回值,必须与@Retryable⽅法相同,否则不执⾏
*
* */
spring boot选择题@Retryable(value = RuntimeException.class, //捕捉的异常
maxAttempts = 3,    //最⼤重试次数
backoff = @Backoff(multiplier = 2,delay = 2000L))  //重试策略
public int retry(int num){
int i = RandomUtil.randomInt(20, 100);
if (i<num){  //触发异常
System.out.println("数字 =" + i+"⽐ "+ num +"⼩ ,,将重试");
throw new RuntimeException();
}
return num;
}
@Recover //全部失败后
public int recover(Exception e){
System.out.println("全部重试结束,以recover补偿");
return88;
}
}
## 测试⽤例
@SpringBootTest
@RunWith(SpringRunner.class)
public class TestRetry {
@Autowired
RetryService retryService;
@Test
public void retryTeest(){
int recover = (66);
System.out.println("recover = " + recover);
}
}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。