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

OpenFeign

OpenFeign是一个声明式的http客户端

快速入门

①:引入依赖

  <!--openFeign--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId></dependency><!--负载均衡器--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-loadbalancer</artifactId></dependency>

②:通过@EnableFeignClients注解,启用OpenFeign功能

@EnableFeignClients
@SpringBootApplication
public class CartApplication{}

③:编写FeignClient

@FeignClient(value = "item-service")  //服务名称
public interface ItemClient {@GetMapping("/items")  //请求方式和请求路径List<ItemDTO> queryItemByIds(@RequestParam("ids") Collection<Long> ids);
}

④:使用FeignClient,实现远程调用

List<ItemDTO> items = itemClient.queryItemByIds(itemIds);

*原来的写法

List<ServiceInstance> instances = discoveryClient.getInstances("item-service");if(CollUtils.isEmpty(instances)){return;}//2.2 手写负载均衡,从服务列表中挑选一个实例ServiceInstance instance = instances.get(RandomUtil.randomInt(instances.size()));//2.3 利用RestTemplate发起http请求,得到http响应ResponseEntity<List<ItemDTO>> response = restTemplate.exchange(instance.getUri() + "/items?ids={ids}",HttpMethod.GET,null,new ParameterizedTypeReference<List<ItemDTO>>() {},Map.of("ids", CollUtils.join(itemIds, ",")));

连接池

Feign底层发起http请求,依赖于其它的框架。其底层支持的http客户端实现包括:

  • HttpURLConnection:默认实现,不支持连接池

  • Apache HttpClient :支持连接池

  • OKHttp:支持连接池

①:导入依赖

<!--OK http 的依赖 -->
<dependency><groupId>io.github.openfeign</groupId><artifactId>feign-okhttp</artifactId>
</dependency>

②:配置文件中开启Feign的连接池功能

feign:okhttp:enabled: true # 开启OKHttp功能

http://www.xdnf.cn/news/7941.html

相关文章:

  • 人工智能100问☞第28问:什么是过拟合与欠拟合?
  • PCB设计实践(二十四)PCB设计时如何避免EMI
  • mmaction2——tools文件夹下
  • MySQL 5.7 实战:JSON 字段提取、Base64 解码与引号问题全解析
  • Spring循环依赖
  • 从版本控制到协同开发:深度解析 Git、SVN 及现代工具链
  • 六台升降台完整的限位保护逻辑
  • springboot3.x只需两步快速整合nacos作配置中心
  • NSSCTF [BJDCTF 2020]YDSneedGirlfriend
  • 深度图转换为点云文件脚本
  • 2025-05-21 Python深度学习5——数据读取
  • 深入解析应用程序分层及 BaseDao 的封装策略
  • Electron 后台常驻服务实现(托盘 + 开机自启)
  • 第18天-NumPy + Pandas + Matplotlib多维度直方图
  • HashMap 两数之和java
  • 【最细】自动化测试-解决日志问题,一文贯通...
  • 深入浅出IIC协议 - 从总线原理到FPGA实战开发 --第四篇:I2C工业级优化实践
  • 2024CCPC辽宁省赛 个人补题 ABCEGJL
  • Plant Cell|澳大利亚国立大学研究团队揭示狗尾草应对长期高温的 “生存秘籍”-三重协同机制逆天改命!
  • 46页 @《人工智能生命体 新启点》中國龍 原创连载
  • fatload使用方式
  • 解锁 YOLOv8 新潜能:EfficientViT 主干网络的优化实践与实验数据解读
  • 【spring】spring学习系列之十一:spring的事件监听
  • uni.getLocation()和uni.openSetting()
  • SOC-ESP32S3部分:5-IDF的日志管理
  • LVDS系列13:Xilinx Ultrascale系可编程输入延迟(三)
  • STM32之串口通信WIFI上云
  • Centos8安装 python3并保留系统的python2
  • C语言求1到n的和(附带源码和解析)
  • 华为云Flexus+DeepSeek征文|零基础搭建Dify-LLM应用开发平台 - 从部署到应用的完整指南