1.什么feign组件 ----> Openfeign组件
feign(Netfilx) —>进入了维护状态 —> springCloud OpenFeign(spring) 这两个组件现在使用:特性 使用方式一致
简介:Rest Client: OpenFeign RestTemplate 作用一致都是一个http客户端
RestTemplate: spring框架封装httpClient对象
OpenFeign : 伪HttpClent客户端 他可以使服务器间通信更简单
简单:
1.使用写一个接口 加一个注解
2.调用服务代码 更加简单 自动完成数据传递过程中的对象转换 (可以使用springmvc的注解)
feign默认集成了Ribbon组件,默认实现了负载均衡的效果并且springcloud为feign添加了springmvc注解的支持
2.为什么使用 OpenFeign
a.RestTemplate 使用问题 : 1.路径写死, 2.不能自动转换响应结果为对应对象 3.必须集成Ribbon实现负载均衡
b.openFeign组件 解决RestTemplate实现服务间通信所有问题
3.项目引入文件
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
启动类 添加 @EnableFeignClients // 开启openfeign客户端调用
创建包 feignclient 用于存储需要调用的服务接口 接口类名为 需要调用的服务器的 业务PaymentController
接口名为 PaymentClient
调用时 跟我们正常调用接口一致
OpenFeign默认超时处理
1.默认的调用超时:使用openFeign组件在进行服务间通信时要求被调用服务必须在1S内给予响应,一旦业务逻辑时间超过1S,
OpenFeign组件将直接报错。
2.修改openFeign超时时长:
feign:
client:
config:
cloud-paymen-service: # 需要设置的服务id 修改单个服务的超时时长
connectTimeout: 5000
readTimeout: 5000
feign.client.config.cloud-paymen-service.connectTimeout=5000
feign.client.config.cloud-paymen-service.readTimeout=5000
feign:
client:
config:
default: # 修改全局服务超时时长
connectTimeout: 5000
readTimeout: 5000
feign.client.config.default.connectTimeout=5000
feign.client.config.default.readTimeout=5000
3.OpenFeign 日志展示
OpenFeign伪httpClient客户端对象,用来帮助我们完成服务间通信,底层用http协议 完成服务间调用
日志: OpenFeign为了方便在开发过程中调试OpenFeign数据传递,和响应处理,OpenFeign在设计时添加了日志功能,
默认OpenFeign日志功能需要手动开启的
logging:
level:
default: debug
# feign每一个客户端提供一个日志对象
# NONE 不记录任何日志
# BASIC 仅仅记录请求方法, url,响应状态码及执行时间
# HEADERS 记录Basic级别的基础上,记录请求和响应的header
# FULL 记录请求和响应的header,body和元数据 展示全部http协议状态
Ribbon配置
全局配置,对所有的@FeignClient生效
ribbon:
ReadTimeout: 10000 # 连接超时
ConnectTimeout: 10000 # 读取超时
# 对【用户微服务】的ribbon配置,cloud-paymen-service对应注册中心的服务名
cloud-paymen-service:
ribbon:
OkToRetryOnAllOperations: true # 对所有操作请求都进行重试
MaxAutoRetries: 2 # 对当前实例的重试次数
MaxAutoRetriesNextServer: 0 # 切换实例的重试次数
ConnectTimeout: 3000 # 请求连接的超时时间
ReadTimeout: 3000 # 请求处理的超时时间