Spring Cloud Alibaba - 14 OpenFeign自定义配置 + 调用优化 + 超时时间
Posted 小小工匠
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring Cloud Alibaba - 14 OpenFeign自定义配置 + 调用优化 + 超时时间相关的知识,希望对你有一定的参考价值。
文章目录
打印Feign调用日志
默认情况下,Feign的调用式不打印日志,我们需要通过自定义来打印我们的Feign的日志, 生产环境推荐basic
日志级别
级别 | 输出内容 |
---|---|
NONE(默认) | 不记录任何信息 |
BASIC | 仅记录请求方法、URL、响应状态和执行时间 |
HEADERS | 在BASIC基础上,记录请求和响应的HEADER |
FULL | 记录请求和响应的HEADER、BODY和元数据 |
三部曲
step1 添加Feign的自定义配置
子模块 artisan-feign-api 增加 配置
import feign.Logger;
import org.springframework.context.annotation.Bean;
/**
* @author 小工匠
* @version 1.0
* @description: 千万不要添加@Configuration,不然会被作为全局配置文件共享
* @date 2022/2/3 22:19
* @mark: show me the code , change the world
*/
public class ProductCenterFeignConfig
@Bean
public Logger.Level level()
return Logger.Level.BASIC;
千万不要添加@Configuration,不然会被作为全局配置文件共享
step2 声明式接口指定配置
子模块 artisan-feign-api
Step3 声明式接口包日志级别调整为DEBUG
接口调用方 artisan-cloud-feign-order 的 application.yml
# 子模块下的声明式接口包 日志级别必须是debug ,不然不打印日志
logging:
level:
com:
artisan:
feignapi: debug
验证
启动两个服务,访问 http://localhost:8080/selectOrderInfoById/1
观察order的日志
基于yml文件细粒度配置日志
调用方配置yml
在调用方artisan-cloud-feign-order ,通过feign:client:config:微服务名称:loggerLevel: 日志级别
来指定
# 基于yml文件细粒度配置 - 通过feign:client:config:微服务名称:loggerLevel日志级别来指定
feign:
client:
config:
artisan-product-center:
loggerLevel: full
支持配置多个
我们再来个 artisan-cloud-feign-pay 服务验证下
验证
启动服务,分别访问接口,观察日志
使用Feign原生的注解配置
根据自动装配我们FeignClients的配置中的默认锲约是springmvc , 如果需要修改的话,修改契约即可(使用Feign原生的API)
用的较少, 这里就不演示了。
拦截器的应用配置
Spring Cloud Alibaba - 15 微服务之间使用Feign实现参数的透传
Feign调用优化方案
Step 1 开启连接池配置
Step 2 调整Feign的日志级别(强烈推荐使用Basic级别的)
方法见上文
Feign的生产实践 (Feign的超时为准)
Feign的底层用的是Ribbon,那么我们怎么配置超时时间呢?
我们来测试下
服务方模拟响应过长
超时设置
验证
那如果我们换一下呢 (Ribbon 设置 5秒, Feign设置2秒 , Product仍然休眠3秒) 。看下什么情况
测试一下看看呢
源码
https://github.com/yangshangwei/SpringCloudAlibabMaster
以上是关于Spring Cloud Alibaba - 14 OpenFeign自定义配置 + 调用优化 + 超时时间的主要内容,如果未能解决你的问题,请参考以下文章
Spring Cloud Alibaba系列nacos作为服务注册中心
Spring Cloud Alibaba(15)---Sleuth+Zipkin
Spring Cloud Alibaba全家桶——Spring Cloud Alibaba介绍