Spring Cloud Alibaba - 14 OpenFeign自定义配置 + 调用优化 + 超时时间

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: Spring Cloud Alibaba - 14 OpenFeign自定义配置 + 调用优化 + 超时时间

6735aa4777de402592fbe82e8b40ee3d.png

打印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


b850d833195040dbb5efc2e52dd00eb1.png

Step3 声明式接口包日志级别调整为DEBUG

接口调用方 artisan-cloud-feign-order 的 application.yml

# 子模块下的声明式接口包 日志级别必须是debug ,不然不打印日志
logging:
  level:
    com:
      artisan:
        feignapi: debug


验证


启动两个服务,访问 http://localhost:8080/selectOrderInfoById/1

观察order的日志

36ef2d9abf4b4724a3b0666c13df77b3.png


基于yml文件细粒度配置日志

调用方配置yml


2e09544aec2a4ce89108429f6280d571.png

在调用方artisan-cloud-feign-order ,通过feign:client:config:微服务名称:loggerLevel: 日志级别来指定

# 基于yml文件细粒度配置 - 通过feign:client:config:微服务名称:loggerLevel日志级别来指定
feign:
  client:
    config:
      artisan-product-center:
        loggerLevel: full


支持配置多个

a2080faf0f5d433985b454b1aa47e405.png

我们再来个 artisan-cloud-feign-pay 服务验证下


验证

启动服务,分别访问接口,观察日志

b617f1b6a8f946ebaf8f9f19b3004621.png


使用Feign原生的注解配置


根据自动装配我们FeignClients的配置中的默认锲约是springmvc , 如果需要修改的话,修改契约即可(使用Feign原生的API)

用的较少, 这里就不演示了。


拦截器的应用配置

Spring Cloud Alibaba - 15 微服务之间使用Feign实现参数的透传


Feign调用优化方案

Step 1 开启连接池配置


9e6c5b5317154a28ae270bef9f7d0671.png


Step 2 调整Feign的日志级别(强烈推荐使用Basic级别的)

方法见上文


Feign的生产实践 (Feign的超时为准)


Feign的底层用的是Ribbon,那么我们怎么配置超时时间呢?

我们来测试下


服务方模拟响应过长


fbbaffa1df4147a4978f5f3e99437b49.png


超时设置


237bb71a6dce466b8c8c70b44903b386.png


验证


7b419aff224e432ba869bbadb5a4e113.png


那如果我们换一下呢 (Ribbon 设置 5秒, Feign设置2秒 , Product仍然休眠3秒) 。看下什么情况


d944c9c135a245168d650920cfc62a8d.png

测试一下看看呢


328ad5f0cbbd48788a06afb2e1151393.png


源码


https://github.com/yangshangwei/SpringCloudAlibabMaster


相关实践学习
通过日志服务实现云资源OSS的安全审计
本实验介绍如何通过日志服务实现云资源OSS的安全审计。
相关文章
|
6天前
|
人工智能 Java Nacos
基于 Spring AI Alibaba + Nacos 的分布式 Multi-Agent 构建指南
本文将针对 Spring AI Alibaba + Nacos 的分布式多智能体构建方案展开介绍,同时结合 Demo 说明快速开发方法与实际效果。
423 34
|
7天前
|
人工智能 运维 Java
Spring AI Alibaba Admin 开源!以数据为中心的 Agent 开发平台
Spring AI Alibaba Admin 正式发布!一站式实现 Prompt 管理、动态热更新、评测集构建、自动化评估与全链路可观测,助力企业高效构建可信赖的 AI Agent 应用。开源共建,现已上线!
628 17
|
10天前
|
人工智能 监控 Java
Spring AI Alibaba实践|后台定时Agent
基于Spring AI Alibaba框架,可构建自主运行的AI Agent,突破传统Chat模式限制,支持定时任务、事件响应与人工协同,实现数据采集、分析到决策的自动化闭环,提升企业智能化效率。
Spring AI Alibaba实践|后台定时Agent
|
1月前
|
人工智能 Java 机器人
基于Spring AI Alibaba + Spring Boot + Ollama搭建本地AI对话机器人API
Spring AI Alibaba集成Ollama,基于Java构建本地大模型应用,支持流式对话、knife4j接口可视化,实现高隐私、免API密钥的离线AI服务。
892 1
基于Spring AI Alibaba + Spring Boot + Ollama搭建本地AI对话机器人API
|
2月前
|
人工智能 Java 开发者
邀您参与 “直通乌镇” Spring AI Alibaba 开源竞技挑战赛!
邀您参与 “直通乌镇” Spring AI Alibaba 开源竞技挑战赛!
|
3月前
|
人工智能 数据可视化 Java
性能提升 10 倍, DIFY 模式迁移至 Spring AI Alibaba 模式 零改造实现
将 Dify 应用迁移至 Spring AI Alibaba,可兼顾可视化开发效率与代码工程灵活性,显著提升系统性能与扩展能力,适用于复杂 AI 业务场景。
529 0
|
SpringCloudAlibaba API 开发者
新版-SpringCloud+SpringCloud Alibaba
新版-SpringCloud+SpringCloud Alibaba
|
7月前
|
负载均衡 Dubbo Java
Spring Cloud Alibaba与Spring Cloud区别和联系?
Spring Cloud Alibaba与Spring Cloud区别和联系?
|
8月前
|
人工智能 SpringCloudAlibaba 自然语言处理
SpringCloud Alibaba AI整合DeepSeek落地AI项目实战
在现代软件开发领域,微服务架构因其灵活性、可扩展性和模块化特性而受到广泛欢迎。微服务架构通过将大型应用程序拆分为多个小型、独立的服务,每个服务运行在其独立的进程中,服务与服务间通过轻量级通信机制(通常是HTTP API)进行通信。这种架构模式有助于提升系统的可维护性、可扩展性和开发效率。
2532 2

热门文章

最新文章