文章目录
- 代码下载地址
- OpenFeign简介
- OpenFeign使用步骤
-
-
- 测试
-
- OpenFeign超时控制
-
- 超时设置,故意设置超时演示出错情况
-
-
- 服务提供方8001故意写暂停程序
- 服务消费方80添加超时方法PaymentFeignService
- 服务消费方80添加超时方法OrderFeignController
- 测试
- YML文件里需要开启OpenFeign客户端超时控制
- 测试
-
- OpenFeign日志打印功能
代码下载地址
地址:https://github.com/13thm/study_springcloud/tree/main/days7_OpenFeign
OpenFeign简介
Feign是一个声明式WebService客户端。使用Feign能让编写Web Service客户端更加简单。
它的使用方法是定义一个服务接口然后在上面添加注解。Feign也支持可拔插式的编码器和解码器。Spring Cloud对Feign进行了封装,使其支持了Spring MVC标准注解和HttpMessageConverters。Feign可以与Eureka和Ribbon组合使用以支持负载均衡
OpenFeign使用步骤
1.新建cloud-consumer-feign-order80
2.改POM
3. 改YML
4. 主启动
5. 业务类
可以换成 直接下载cloud-consumer-feign-order80 ,具体怎么改的具体看下载代码
测试
按顺序启动以下服务。
http://localhost/consumer/payment/get/1
OpenFeign超时控制
超时设置,故意设置超时演示出错情况
服务提供方8001故意写暂停程序
在8001 改写controller
添加一下(具体可看下载代码)
@GetMapping(value = "/payment/feign/timeout") public String paymentFeignTimeOut() { System.out.println("*****paymentFeignTimeOut from port: "+serverPort); //暂停几秒钟线程 try { TimeUnit.SECONDS.sleep(3); } catch (InterruptedException e) { e.printStackTrace(); } return serverPort; }
服务消费方80添加超时方法PaymentFeignService
添加
@GetMapping(value = "/payment/feign/timeout") String paymentFeignTimeOut();
服务消费方80添加超时方法OrderFeignController
添加
@GetMapping(value = "/consumer/payment/feign/timeout") public String paymentFeignTimeOut() { return paymentFeignService.paymentFeignTimeOut(); }
测试
http://localhost/consumer/payment/feign/timeout
YML文件里需要开启OpenFeign客户端超时控制
server: port: 80 eureka: client: register-with-eureka: false service-url: defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7002.com:7002/eureka/ #设置feign客户端超时时间(OpenFeign默认支持ribbon) ribbon: #指的是建立连接所用的时间,适用于网络状况正常的情况下,两端连接所用的时间 ReadTimeout: 5000 #指的是建立连接后从服务器读取到可用资源所用的时间 ConnectTimeout: 5000
测试
http://localhost/consumer/payment/feign/timeout
OpenFeign日志打印功能
NONE:默认的,不显示任何日志; BASIC:仅记录请求方法、URL、响应状态码及执行时间; HEADERS:除了 BASIC 中定义的信息之外,还有请求和响应的头信息; FULL:除了 HEADERS 中定义的信息之外,还有请求和响应的正文及元数据。
配置日志bean
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import feign.Logger; /** * @auther zzyy * @create 2019-11-10 17:00 */ @Configuration public class FeignConfig { @Bean Logger.Level feignLoggerLevel() { return Logger.Level.FULL; } }
改yml文件
server: port: 80 eureka: client: register-with-eureka: false service-url: defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7002.com:7002/eureka/ #设置feign客户端超时时间 #springCloud默认开启支持ribbon ribbon: #指的是建立连接所用的时间,适用于网络状况正常的情况下,两端连接所用的时间 ReadTimeout: 5000 #指的是建立连接后从服务器读取到可用资源所用的时间 ConnectTimeout: 5000 logging: level: # feign日志以什么级别监控哪个接口 com.atguigu.springcloud.service.PaymentFeignService: debug