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

七天学会SpringCloud分布式微服务——05——OpenFeign

1、OpenFeign实现远程调用

在这里插入图片描述

1.1 services.pom引入依赖

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

1.2 在service-order微服务中新建feign.ProductFeignClient.java

在这里插入图片描述

package com.zhenbang.feign;import com.zhenbang.product.bean.Product;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;@FeignClient("service-product")   // feign客户端
public interface ProductFeignClient {// MVC注解的两套使用逻辑// 1、标注在Controller ,是接受这样的请求// 2、标注在FeignClient,是发送这样的请求@GetMapping("/product/{id}")Product getProductById(@PathVariable("id") Long id);}
  • 这里需要说明@FeignClient注解的Value值是要调用的微服务名字
  • @GetMapping请求,要调用的product-service微服务的controller函数,此处在controller中复制

1.3 注入以及调用

@Resource
ProductFeignClient productFeignClient;
 Product productFromRemote = productFeignClient.getProductById(productId);

2、OpenFeign调用详细日志实现

在这里插入图片描述

3、OpenFeign超时控制

在这里插入图片描述
在这里插入图片描述

  • 连接超时和读取超时
  • 默认时间分别是 10s 和 60s
  • 超时配置
    在这里插入图片描述

4、OpenFeign重试机制

在这里插入图片描述

  • 默认没有重试
  • 可以设置重试(100ms,1s,5)
    最大重复次数5次、如果相隔时间超过1s,不再重试,第2次是100ms,第三次是100ms*1.5

增加一个重试配置类

**加粗样式**

package com.zhenbang.config;import feign.Retryer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;@Configuration
public class RetryerConfig {@BeanRetryer retryer(){return new Retryer.Default();// 这个放那三个参数}
}

5、OepenFeign配置拦截器

在这里插入图片描述
以请求拦截器为例

5.1 请求拦截器java文件

在这里插入图片描述
java文件

package com.zhenbang.interceptor;import feign.RequestInterceptor;
import feign.RequestTemplate;
import org.springframework.stereotype.Component;import java.util.UUID;
/*拦截器使用的第二种方式*/
@Component
public class TokenRequestInterceptor implements RequestInterceptor {@Overridepublic void apply(RequestTemplate requestTemplate) {System.out.println("拦截器启动");/*为这次请求头种添加token信息*/// 主要是requestTemplate.header("X-Token", UUID.randomUUID().toString());}
}

5.2 拦截器配置使用

方法一:在yml文件中
在这里插入图片描述
方法二:拦截器加Component组件
在这里插入图片描述
这里使用第2种方式

6、OpenFeign兜底返回Fallback

在这里插入图片描述

6.1 编写回调函数

在这里插入图片描述

6.2 ProductFeignClientFallback.java

package com.zhenbang.feign.fallback;
import java.math.BigDecimal;import com.zhenbang.feign.ProductFeignClient;
import com.zhenbang.product.bean.Product;
@Component
public class ProductFeignClientFallback implements ProductFeignClient {@Overridepublic Product getProductById(Long id) {System.out.println("回调兜底");Product product = new Product();product.setId(id);product.setPrice(new BigDecimal("0"));product.setProductName("");product.setNum(0);return product; // 如果调用失败,就走回调这个逻辑,返回空值}
}

6.3 service.pom引入Sentinel依赖

     <dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-sentinel</artifactId></dependency>

6.4 yml开启Sentinel功能

在这里插入图片描述

  • feign用Sentinel开启熔断功能
http://www.dtcms.com/a/263385.html

相关文章:

  • 基于时间策略+应用过滤的游戏防沉迷方案:技术实现与工具推荐
  • Python pandas-profiling 详解:一键生成数据分析报告的利器
  • 使用自定义注解完成redis缓存
  • Windows Excel文档办公工作数据整理小工具
  • SpringCloud系列(43)--搭建SpringCloud Config客户端
  • Install Ubuntu 24.04 System
  • SpringCloud系列(42)--搭建SpringCloud Config分布式配置总控中心(服务端)
  • ProPlus2024Retail 安装教程(详细步骤+激活方法)- 最新版安装包下载与使用指南
  • mysql运维语句
  • window显示驱动开发—在注册表中设置 DXGI 信息
  • SCAU期末笔记 - 操作系统 选填题
  • 【机器学习第四期(Python)】LightGBM 方法原理详解
  • 跨主机用 Docker Compose 部署 PostgreSQL + PostGIS 主从
  • [特殊字符]【联邦学习实战】用 PyTorch 从 0 搭建一个最简单的联邦学习系统(含完整代码)
  • 编程新手之环境搭建:node python
  • [论文阅读] Neural Architecture Search: Insights from 1000 Papers
  • 创客匠人解析知识变现赛道:从 IP 孵化到商业闭环的核心策略
  • xilinx axi datamover IP使用demo
  • 【STM32HAL-第1讲 基础篇-单片机简介】
  • C#数字格式化全解析:从基础到进阶的实战指南
  • 腾讯云空间,高性能显卡云,安装xinference报错,pip install 空间不够用了
  • leedcode:找到字符串中所有字母异位词
  • 04密码加密
  • 中钧科技参加中亚数字经济对话会,引领新疆企业数字化新征程!
  • 【Teensy】在ArduinoIDE中配置Teensy4.1
  • LoRA 实战指南:NLP 与 CV 场景的高效微调方法全解析
  • 非常详细版: dd.device.geolocation 钉钉微应用获取定位,移动端 PC端都操作,Vue实现钉钉微应用获取精准定位并渲染在地图组件上
  • 强化学习概述及学习流程
  • 视频讲解:门槛效应模型Threshold Effect分析数字金融指数与消费结构数据
  • spring-ai 工作流