文章目录

  • 打印Feign调用日志
    • 日志级别
    • 三部曲
      • step1 添加Feign的自定义配置
      • step2 声明式接口指定配置
      • Step3 声明式接口包日志级别调整为DEBUG
    • 验证
  • 基于yml文件细粒度配置日志
    • 调用方配置yml
    • 验证
  • 使用Feign原生的注解配置
  • 拦截器的应用配置
  • Feign调用优化方案
    • Step 1 开启连接池配置
    • Step 2 调整Feign的日志级别(强烈推荐使用Basic级别的)
  • Feign的生产实践 (Feign的超时为准)
    • 服务方模拟响应过长
    • 超时设置
    • 验证
  • 源码


打印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 {@Beanpublic 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自定义配置 + 调用优化 + 超时时间相关推荐

  1. Spring Cloud Alibaba - 11 Ribbon 自定义负载均衡策略(同集群优先权重负载均衡算法)

    文章目录 Pre 需求 工程 Code 继承AbstractLoadBalancerRule实现自定义Rule 随机权重策略 配置 验证 源码 Pre Spring Cloud Alibaba - 0 ...

  2. Spring Cloud Alibaba - 18 Nacos Config配置中心加载相同微服务的不同环境下的通用配置

    文章目录 需求 实现 Step 1 Nacos Config 新增公共配置 Step 2 验证 配置文件优先级 源码 需求 举个例子,同一个微服务,通常我们的servlet-context 都是相同的 ...

  3. Spring Cloud Alibaba - 19 Nacos Config配置中心加载不同微服务的通用配置的两种方式

    文章目录 Pre 实现 方式一 通过 shared-dataids 方式 方式二 通过 ext-config方式 配置文件优先级 源码 Pre Spring Cloud Alibaba - 18 Na ...

  4. Spring Cloud Alibaba gateway ribbon 自定义负载均衡规则。发散灰度发布,金丝雀测试等

    上一篇介绍了,ribbon的组件.本篇要自己写一个灰度方案.其实就是一个很简单的思维扩散. 需求 前端header请求携带version字段.路由服务根据version去需要对应版本的服务集合,进行或 ...

  5. Spring Cloud Alibaba - 10 Ribbon 自定义负载均衡策略(权重算法)

    文章目录 Pre 工程 首先屏蔽细粒度配置 然后通过代码设置一个全局配置 指定 GlobalRibbonConfig GlobalRibbonConfig 设置负载均衡策略 开发自定义策略 (权重访问 ...

  6. nacos 配置动态刷新_使用 Spring Cloud Alibaba Nacos Config 作为配置中心

    什么是 Nacos Config 在分布式系统中,由于服务数量巨多,为了方便服务 配置文件统一管理,实时更新,所以需要分布式配置中心组件. Spring Cloud Alibaba Nacos Con ...

  7. Spring Cloud Alibaba - 17 Nacos Config 配置中心 应用篇

    文章目录 Nacos配置中心基础概念 配置服务 (Configuration Service) 配置管理 (Configuration Management) 配置项 配置集 配置集 ID 配置分组 ...

  8. Spring Cloud Alibaba入门实践(五)-远程调用Feign

    上篇博客通过引入nacos,实现了服务的自动发现和注册,省去了人工维护列表的繁琐. 那有了nacos,或者说目前只有nacos,能做到什么?其实nacos有一个很重要的类叫DiscoveryClien ...

  9. Spring Cloud Alibaba - 13 OpenFeign应用篇

    文章目录 What's Feign ( Ribbon+RestTemplate) Vs Feign Feign整合 artisan-feign-api 子模块构建 Step1 搞依赖 Step2 修改 ...

最新文章

  1. UVA - 10048 Audiophobia(Floyd求路径上最大值的最小)
  2. echart css样式弄了几个月了,样式一直都没有好好解决,好激动
  3. python学精通要多久-精通python要多久
  4. c语言中有bool型变量吗?
  5. 人工智能,不止于技术的革命--WOT2017全球创新技术峰会开幕
  6. tensorflow学习笔记七----------卷积神经网络
  7. 单进程服务器-epoll版
  8. 3.5 将 Batch Norm 拟合进神经网络
  9. Atitit Elasticsearch6之elasticsearch5.x 新特性 目录 1.1. 其实,elasticsearch5.x 和 elasticsearch2.x 并不区别很大。 1
  10. Windows server 2003设置IP安全策略批处理脚本
  11. php实现C32,c32rtomb - [ C语言中文开发手册 ] - 在线原生手册 - php中文网
  12. Photoshop插件-创建所有亮度通道蒙板-脚本开发-PS插件
  13. 西门子PLC与Intouch软件以太网通讯
  14. python编译成可执行文件 发布 win_[PYTHON]_ELVE_Python源代码文件编译成可执行文件(支持macOS High Sierra和window 10)...
  15. java adsl 拨号_[zt]利用脚本实现ADSL自动拨号上网
  16. 3、HeidiSQL数据库管理工具下载与安装
  17. 天津大学软件学院 研究生学位申请的学术成果要求
  18. mysql如果忘记密码怎么办
  19. c++数据结构350、121
  20. Web渗透攻击之vega

热门文章

  1. 最新的ndkr20编译c_史上最优雅的NDK加载pass方案
  2. 表格布局(tablelayout)
  3. java文件名特殊字符_如果拒绝打开文件名中带有特殊字符的文件,如何修复Java?...
  4. 计算机视觉编程——图像到图像的映射
  5. CCF 2018年题目题解 - Python
  6. top99 slam
  7. python 提取字符串中的数字
  8. ssr pac_阴阳师新SSR千姬什么时候上线 ssr千姬活动上线时间一览
  9. 线性代数笔记: Cholesky分解
  10. 文巾解题 LCP 07. 传递信息