OpenFeign 可让客户端向服务端发送请求
OpenFeign 可用于替代 Ribbon+RestTemplate。
OpenFeign 需要定义一个接口使用,默认仍是轮询算法
依赖
<!--openfeign--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> </dependency>
yaml中不需要做额外配置,如果是集群环境的话正常连接集群即可
给出示例:
通过客户端向服务端发送请求,下面以此为例。
在启动类中添加注解
Service层中添加接口
该接口的作用是,只要调用了
getPaymentById()
方法,客户端就向cloud-payment-service
服务器发送/payment/get/{id}
请求
controller层
controller 没啥区别,直接使用函数即可
OpenFeign默认等待时间为1s,如果超过1s就会直接报错。
但对于一些耗时长的业务而言1s是不够的,我们可以在yaml文件里手动设置OpenFeign的等待时间。
单位ms
#设置feign客户端超时时间(OpenFeign默认支持ribbon) ribbon: #指的是建立连接所用的时间,适用于网络状况正常的情况下,两端连接所用的时间 ReadTimeout: 5000 #指的是建立连接后从服务器读取到可用资源所用的时间 ConnectTimeout: 5000
需要注入bean、配置yaml
config类如下:
FULL
为日志级别
@Configuration public class FeignConfig { @Bean Logger.Level feignLoggerLevel() { return Logger.Level.FULL; } }
日志级别如下:
NONE:默认的,不显示任何日志; BASIC:仅记录请求方法、URL、响应状态码及执行时间; HEADERS:除了 BASIC 中定义的信息之外,还有请求和响应的头信息; FULL:除了 HEADERS 中定义的信息之外,还有请求和响应的正文及元数据。
yaml配置
以debug方式显示PaymentFeignService
类的日志信息
效果如图