👉 本节目标:了解传统重试的写法以及 Spring-Retry 快速入门。
下面使用一个例子来讲述:调用第三方接口获取数据,支持重试 3 次,每次重试间隔 5 秒。
传统写法
传统写法:while 循环,判断是否有异常,有异常则重试,并使用 Thread 延迟,直到重试次数用完或重试成功为止。
调用第三方接口的代码:👉 普通的 RestTemplate 调用文章来源:https://www.toymoban.com/news/detail-846320.html
var responseEntity = restTemplate.exchange(new RequestEntity<>(HttpMethod.GET, URI.create(drugUrl)),
new ParameterizedTypeReference<R<List<Drug>>>() {
});
Assert.isTrue(responseEntity.getStatusCode().is2xxSuccessful(), "请求状态码不是200!");
Assert.notNull(responseEntity.getBody(), "response body 不可为空!");
return responseEntity.getBody().getData();
加入重试逻辑:😂 RestTemplate 代码被重试代码包裹,代码可读性不高,可复用性差文章来源地址https://www.toymoban.com/news/detail-846320.html
- 设定最大重试次数为 4。
- while 循环实现重试,出现异常则线程睡眠 3 秒,然后进行下一次重试。
- 如果超过最大重试次数,则停止重试,返回空集合;如果重试成功,则直接返回。
public List<Drug> getDrugWithWhileRetry(String drugUrl) {
// 最大重试次数
int maxAttempt = 4;
int current = 1;
while (current <= maxAttempt) {
log.info("正在进行第{}次调用", current);
try {
var responseEntity = restTemplate.exchange(new RequestEntity<>(HttpMethod.GET, URI.create(drugUrl
到了这里,关于Java 重试框架 Spring-Retry | 快速入门的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!