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

东莞网站建制作网站优化服务

东莞网站建制作,网站优化服务,黑豹站群系统,哪个网站专门做牛奶的OpenFeign 学习笔记 一、基础入门 1.1 简介 OpenFeign 是基于声明式的 REST 客户端,用于简化服务间远程调用。(编程式 REST 客户端(RestTemplate)) 通过接口注解方式定义 HTTP 请求,自动实现服务调用。 …

OpenFeign 学习笔记

一、基础入门

1.1 简介

  • OpenFeign 是基于声明式的 REST 客户端,用于简化服务间远程调用。(编程式 REST 客户端(RestTemplate))

  • 通过接口+注解方式定义 HTTP 请求,自动实现服务调用。

    注解驱动

    ​ • 指定远程地址:@FeignClient

    ​ • 指定请求方式:@GetMapping、@PostMapping、@DeleteMapping …

    • 指定携带数据:@RequestHeader、@RequestParam、@RequestBody …

    ​ • 指定结果返回:响应模型

  • 官网:https://docs.spring.io/spring-cloud-openfeign/reference/spring-cloud-openfeign.html#spring-cloud-feign

  • 人话总结:OpenFeign是一种替代RestTemplate的工具,专门用来实现不同微服务之间实现远程调用的业务API,相比RestTemplate功能更强大,操作更简介。

在这里插入图片描述

1.2 引入依赖

<!-- Spring Cloud OpenFeign 核心依赖 -->
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>

1.3 开启功能

在主启动类添加注解:

@EnableFeignClients // 启用 OpenFeign 客户端功能
@SpringBootApplication
public class Application { ... }

1.4 远程调用

  1. 定义 Feign 客户端接口:(客户端:发送请求 服务端:接收请求)

    1.1远程调用 - 业务API

@FeignClient(name = "user-service") // 指定服务名称
public interface UserClient {@GetMapping("/user/{id}")      // 指定请求路径(发送请求)User getUserById(@PathVariable Long id);
}

​ 1.2远程调用 - 第三方API

在这里插入图片描述

tip:如何编写好OpenFeign声明式的远程调用接口?

• 业务API:直接复制对方Controller签名即可

• 第三方API:根据接口文档确定请求如何发

​ 2.注入使用

@Autowired
private UserClient userClient;
public User getUser(Long id) {return userClient.getUserById(id); // 直接调用远程接口
}

1.5面试题:客户端负载均衡与服务端负载均衡区别?

答:根据负载均衡发生的位置来区分。

负载均衡发生在客户端就是客户端负载均衡。

负载均衡发生在服务端就是服务端负载均衡。
在这里插入图片描述


二、进阶配置

2.1 开启日志

配置日志级别(application.yml):

logging:level:com.example.client.UserClient: DEBUG # 指定客户端接口的日志级别

配置日志策略(Java Config):

@Configuration
public class FeignConfig {@BeanLogger.Level feignLoggerLevel() {return Logger.Level.FULL; // FULL/BASIC/HEADERS/NONE}
}

2.2 超时控制(避免服务器宕机)

在这里插入图片描述

spring:cloud:openfeign:client:config:default: # 全局配置logger-level: fullconnect-timeout: 1000 # 连接超时(ms)read-timeout: 2000 # 读取超时(ms)user-service: # 指定服务的配置logger-level: fullconnect-timeout: 3000read-timeout: 5000

2.3 重试机制

远程调用超时失败后,还可以进行多次尝试,如果某次成功返回ok,如 果多次依然失败则结束调用,返回错误。

在这里插入图片描述

spring:cloud:openfeign:client:config:default:retryable: true # 启用重试maxAttempts: 3 # 最大重试次数

@Bean
Retryer retryer(){return new Retryer.Default();
}

2.4 Fallback 兜底返回

1.引入 sentinel

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

2.开启熔断

feign:sentinel:enabled: true

3.编写 fallback 函数

@FeignClient(value = "service-product",fallback = ProductFeignClientFallback.class) // feign客户端
public interface ProductFeignClient {//mvc注解的两套使用逻辑//1、标注在Controller上,是接收这样的请求//2、标注在FeignClient上,是发送这样的请求@GetMapping("/product/{id}")Product getProductById(@PathVariable("id") Long id);
}
@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;}
}

三、拦截器用法

在这里插入图片描述

1.请求拦截器

2.响应拦截器(用的不多)

自定义请求拦截器

import feign.RequestInterceptor;@Component//如果放入IOC容器就会自动注册拦截器,可以不做后面的注册
public class XTokenRequestInterceptor implements RequestInterceptor {/***请求拦截器*template 请求模板*/@Overridepublic void apply(RequestTemplate template) {System.out.println("XTokenRequestInterceptor.......");template.header("X-Token", "UUID.randomUUID.toString()"); // 添加请求头,用作身份验证}
}

注册拦截器(配置类中):

@Configuration
public class FeignConfig {@Beanpublic AuthInterceptor authInterceptor() {return new AuthInterceptor();}
}

四、重点总结

核心内容关键点
远程调用客户端通过 @FeignClient 定义接口,使用 @GetMapping 等注解声明 HTTP 方法。
超时控制配置 connectTimeoutreadTimeout,支持全局和按服务配置。
重试机制启用 retryable 并设置 maxAttempts,增强服务调用容错性。
Fallback 兜底实现 Fallback 类处理服务降级,防止级联故障。
拦截器通过 RequestInterceptor 添加统一请求头或认证信息。

注意事项

  1. 生产环境建议配置合理的超时时间和重试策略,避免雪崩效应。
  2. 拦截器可用于统一认证、日志跟踪等场景。
http://www.dtcms.com/wzjs/345154.html

相关文章:

  • 多用户商城网站建设二次开发女教师网课入侵录屏冫
  • 租个国内服务器做网站多少钱优化推广联盟
  • 近期国内重大新闻优化推广方案
  • 不会编程怎么做网站西安seo优化培训
  • 20m做网站抖音关键词搜索排名
  • 域名备案怎么办理武汉seo公司
  • 做视频教学网站如何做广州新一期lpr
  • 成营销型网站制作游戏推广对接平台
  • s上海网站建设广告策划案优秀案例
  • 个人网站怎么做app广东深圳疫情最新
  • 知名it外包公司长春关键词优化公司
  • 明年做哪些网站能致富苏州网站优化公司
  • 手机网站怎么做301近日网站收录查询
  • 网站 地图导航代码360渠道推广系统
  • 温州网站制作哪家好百度热搜关键词排名
  • 邹平做网站东莞服务好的营销型网站建设
  • 沧州网站制作刚开的店铺怎么做推广
  • wordpress会员中心保定百度首页优化
  • 重庆时时彩在线网站制作产品营销方案策划
  • 公司首页模板网站运营推广选择乐云seo
  • 在建工程项目查询青岛seo关键词排名
  • 九江做网站大概多少钱怎么去推广自己的店铺
  • 织梦系统网站地图模板下载seo标题优化步骤
  • 专业北京翻译公司电商seo优化
  • 北京教育云平台网站建设旅游seo整站优化
  • 八宝山做网站公司seo公司的选上海百首网络
  • 文创产品网站站长之家收录查询
  • 万网域名备案网站扬中网站制作
  • 钟落潭有没有做网站的关键词出价计算公式
  • 高端网站建设专业长沙sem培训