当前位置: 首页 > news >正文

SpringBoot feign基于HttpStatus重试

场景

基于springboot开发的项目,对接第三方,第三方的接口有限流策略,某个时间段内有调用频率限制,返回的状态码HttpStatus不是200,而HttpStatus是429。现基于HttpStatus我们发起的重试。

技术点

  1. springboot
  2. feign
    feign要基于HttpStatus重试。

实现

一般我不喜欢配置全局的配置,因为feign的客户端可能会有多个,如果只有一个第三方服务,那可以配置全局的。

  1. 基于HttpStatus为429的解码器
@Slf4j
public class RemoteErrorDecoder implements ErrorDecoder {private static final int TOO_MANY_REQUESTS_CODE = 429;private final ErrorDecoder defaultErrorDecoder = new ErrorDecoder.Default();@Overridepublic Exception decode(String methodKey, Response response) {if (response.status() == TOO_MANY_REQUESTS_CODE) {log.error("请求因为限流被拒绝,methodKey:{},status:{}", methodKey, response.status());return new RetryableException(TOO_MANY_REQUESTS_CODE, "请求因为限流被拒绝", response.request().httpMethod(), null,response.request());} else {log.error("其他状态码,methodKey:{},status:{}", methodKey, response.status());return defaultErrorDecoder.decode(methodKey, response);}}
}
  1. feign配置类
public class RemoteFeignConfig {@Beanpublic ErrorDecoder errorDecoder() {return new RemoteErrorDecoder();}// 重试器可以使用默认的  这边可以根据自己实际情况配置@Beanpublic Retryer retryer() {return new Retryer.Default(30000, 30000, 3);}
}
  1. feign client
@FeignClient(name = "xxx", url = "xxx", configuration = RemoteFeignConfig.class)
public interface RemoteService {// TODO 调用的接口
}
http://www.lryc.cn/news/505124.html

相关文章:

  • 【记录49】vue2 vue-office在线预览 docx、pdf、excel文档
  • 正则表达式中^的用法
  • WPF 关于界面UI菜单权限(或者任意控件的显示权限)的简单管理--只是简单简单简单简单
  • Https身份鉴权(小迪网络安全笔记~
  • AngularJS 输入验证
  • 【网络安全】WIFI WPA/WPA2协议:深入解析与实践
  • 前端使用xlsx-js-style导出Excel,带样式,并处理合并单元格边框显示不全和动态插入表头解决
  • 自动化工具ansible部署和实践
  • 无人机推流直播平台EasyDSS视频技术如何助力冬季森林防火
  • React Fiber
  • 【前端】JavaScript 中的 map() 方法:高级解析与应用
  • 《智能体开发实战(高阶)》四、系统化的日志周报智能体开发计划
  • 什么是Apache日志?为什么Apache日志分析很重要?
  • Mybatis——(2)
  • 景联文科技入选中国信通院发布的“人工智能数据标注产业图谱”
  • 修改浏览器地址栏参数
  • Spring Boot教程之二十五: 使用 Tomcat 部署项目
  • 解决 Git 默认不区分文件名大小写的问题
  • python学opencv|读取图像(十二)BGR图像转HSV图像
  • 信息安全工程师-选择题考点总结
  • 重学SpringBoot3-WebClient配置与使用详解
  • springBoot中的日志级别在哪里配置
  • 统一身份安全管理体系的业务协同能力
  • JAVA课堂笔记23(IO流 (java.io包中))
  • C# DLT645 97/07数据采集工具
  • 中后台管理信息系统:Axure12套高效原型设计框架模板全解析
  • Reactor 响应式编程(第四篇:Spring Security Reactive)
  • JVM 双亲委派模型以及垃圾回收机制
  • Delphi编写涂鸦桌面的小程序
  • 智星云技术文档:GPU测速教程