如何解决Springboot中如何根据HTTP响应代码执行重试
@Retryable(value = ABCDException.class,maxAttemptsExpression = 3,backoff = @Backoff(delayExpression = "#{${application.delay}}"))
public String postABCDrequest(ABCDrequest abcdRequest) throws ABCDException {
try {
return restCalltopostData(abcdRequest);
} catch (AnyException e) {
log.error("Error Occured ",e);
throw new ABCDException("Error Occured ",e);
}
}
在这种方法中,只有在我收到某些响应代码时才需要重新尝试发布数据。我搜索了一些不适合我的解决方案的选项。使用注解有没有更简单的方法?
解决方法
在 catch 块中,您将无法获得响应代码。由于您对所有 5xx
感兴趣,请检查 response.getStatusCode().is5xxServerError()
并重新抛出异常 ABCDException.class
如果异常在服务器端处理良好并返回状态代码。这样,您的代码将继续重试所有 5xx
异常,直到 maxAttempts
耗尽。
否则,您可以简单地通过替换 HttpServerErrorException.class
来重试 ABCDException.class
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。