当前位置: 首页 > 知识库问答 >
问题:

为选定的Http错误状态代码组重试对外部API的rest调用

慕容典
2023-03-14
@Service
public class MyService {

  @Retryable(maxAttempts=3, value = Exception.class, 
             backoff = @Backoff(delay = 100, multiplier = 2))
  public List<String> doCallExternalResource() {
     // ...
  }

}
1. 500 Internal Server Error
2. 502 Bad Gateway
3. 503 Service Unavailable
4. 504 Gateway Timeout

但是我不明白如何使用@retryable注释方法来实现这一点。

有人能帮忙吗?谢了。

共有1个答案

贺君浩
2023-03-14

Retryable注释用于调用服务方法,如果它因在@Retryable上指定的特定异常而失败,它将根据maxAttemptions重试一次(在您的情况下默认为3)。可以使用@recovery注释来指定如果带有可重试注释的方法失败时该方法应该做什么。更多信息请参见文档。

例如:

@Service
class Coordinate {
    @Retryable(GatewayTimeout.class)
    public void service() {
        // ...main method
    }
    @Recover
    public void recover(GatewayTimeout e) {
       // do something if SQLException occurs 3 times.
    }
}

在您的情况下,可以使用GatewayTimeout.class而不是HttpServererRorexCeption.Gateway_Timeout

 类似资料:
  • Hi im构建一个REST API来上传文件。 我得到以下输出: 发送请求....请求:POST http://localhost:8080/mediahandler/mediahandler/api/image-upload http/1.1请求实体:content-type:multipart/form-data;已执行boundary=einjsk3ipttjp7wf-cxls-uznnng

  • 问题内容: 在处理特定网站时,有时会收到状态码为403的http响应。在这种情况下,我想重新执行该请求(因为在我的特定情况下,该服务器实际上超载时会抛出403)。我曾尝试将a 和a 一起使用,但是它没有按我希望的方式工作;我希望在中引发异常会触发,但事实并非如此。如何获得所需的功能? 这是说明我的情况的示例代码: 问题答案: 尝试使用自定义

  • 问题内容: 经过研究后,我在问这个问题。我确实遵循了针对此类错误的解决方案,但对我不起作用。在下面的代码中出现错误的任何建议。我正在创建一个REST API,但是当我请求url时却出现405错误。下面是URI正在请求。 下面是代码片段。 web.xml: 问题答案: 将此更改为并尝试,

  • 我知道有人正在编写一个API,并希望使用HTTP状态代码来报告查询的结果。例如,如果用户调用,并且产品不存在,它将返回HTTP状态。我认为,因为这是一个有效的调用(即实际的HTTP请求没有格式错误),它应该返回一个code响应,并且只需要响应的主体类似于。 所以我的问题是,, 1) 使用HTTP状态码来传递非HTTP程序状态是否合适,如上面的示例所示? 2)是否有一些标准规范,或者至少是广泛使用的

  • 我考虑在项目中使用fluent-http。 所以我尝试注入: 返回正确的字符串,但似乎没有使用状态代码。在这两种情况下,响应都有一个代码HTTP200。 注意:我发现一些状态代码是预先实现的: null

  • 假设我们有以下 API: 没有客人匹配条件时,我应该返回哪个状态码?我的意思是没有名字为假人的客人。 它应该是带有空数组的、还是