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全家桶——Spring Cloud Alibaba介绍

Spring Cloud Alibaba系列教程——Spring Cloud Alibaba开篇

spring boot 整合spring cloud alibaba