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

SpringCloud-OpenFeign-服务接口调用

是什么

把需要暴露的api使用接口来暴露,客户端需要调用的时候,直接查看这个接口中有没有就可以了

通用步骤

架构说明

common模块

common 引入 openfeign

新建服务接口类

@FeignClient(value = "cloud-payment-service") // 服务名
public interface PayFeignApi {@PostMapping("/pay/add")public Result<Integer> addPay(@RequestBody PayDTO payDTO);@GetMapping("/pay/get/{id}")public Result<PayDTO> getById(@PathVariable("id") Integer id); // 必须指明 PathVariable 的 value@GetMapping("/pay/getInfo")public Result<String> getInfo();
}

客户端

<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>

主启动类 @EnableFeignClients

使用

@RestController
public class OrderController {@Resourceprivate PayFeignApi payFeignApi;@GetMapping("/consumer/pay/add")public Result addOrder(PayDTO payDTO) {return payFeignApi.addPay(payDTO);}@GetMapping("/consumer/pay/get/{id}")public Result<PayDTO> getPayByOrderNo(@PathVariable("id") Integer id) {return payFeignApi.getById(id);}@GetMapping("/consumer/pay/getInfo")public Result<String> getInfoByConsul() {return payFeignApi.getInfo();}
}

最后一个案例可以看到,openfeign 天生支持负载均衡

OpenFeign高级特性

日志打印

// 日志记录级别@Beanpublic Logger.Level feignLoggerLevel() {return Logger.Level.FULL;}

超时控制

测试超时时间异常

@GetMapping("/consumer/pay/getInfo")public Result<String> getInfoByConsul() {Result<String> result = null;try {System.out.println("调用开始: " + DateUtil.now());result = payFeignApi.getInfo();} catch (Exception e) {e.printStackTrace();System.out.println("调用结束: " + DateUtil.now());Result.fail(ReturnCodeEnum.RC500.getCode(), e.getMessage());}return result;}

read-timeout 默认 60s

如何调整

全局配置

调整后测试,发现3s后就异常返回

手动配置(服务级别)

同时存在,细粒度的覆盖粗粒度的

重试机制

性能优化HttpClient5替换

<dependency><groupId>io.github.openfeign</groupId><artifactId>feign-hc5</artifactId><version>13.1</version>
</dependency>
<dependency><groupId>org.apache.httpcomponents.client5</groupId><artifactId>httpclient5</artifactId><version>5.3.1</version>
</dependency>
spring:cloud:openfeign:httpclient:hc5:enabled: true

HttpClient5 开启

替换以后

请求回应压缩

spring:cloud:openfeign:compression:request:enabled: truemime-types: text/xml,application/xml,application/jsonmin-request-size: 2048response:enabled: true


http://www.mrgr.cn/news/50173.html

相关文章:

  • Java数据结构--顺序表
  • nemo-guardrails简单应用
  • 二叉平衡树(AVL树)Java语言实现
  • 家庭事务管理系统|基于java和vue的家庭事务管理系统设计与实现(源码+数据库+文档)
  • Diffusion model原理:李宏毅篇(1)
  • threejs-法线向量
  • 周易解读:推荐教材
  • 【C语言刷力扣】2206.将数组划分成相等数对
  • YOLOv11改进策略【Conv和Transformer】| ACmix 卷积和自注意力的结合,充分发挥两者优势
  • linux------缓冲区与C库的原理
  • cmake模板-支持编译动态/静态文件
  • Dmitri Shuralyov的全职开源之旅
  • c语言中使用(>> )运算替代(/ %)运算实现优化
  • 【MAUI】步进器
  • Avarra:革新企业销售培训的未来
  • SHA1算法学习
  • Product1M 深度理解 PPT
  • STL.string(上)
  • Linux内核 -- 多核数据同步原语言之 smp_load_acquire 的作用与使用
  • 当下的时代?