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


相关实践学习
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
相关文章
|
人工智能 Java Serverless
【MCP教程系列】搭建基于 Spring AI 的 SSE 模式 MCP 服务并自定义部署至阿里云百炼
本文详细介绍了如何基于Spring AI搭建支持SSE模式的MCP服务,并成功集成至阿里云百炼大模型平台。通过四个步骤实现从零到Agent的构建,包括项目创建、工具开发、服务测试与部署。文章还提供了具体代码示例和操作截图,帮助读者快速上手。最终,将自定义SSE MCP服务集成到百炼平台,完成智能体应用的创建与测试。适合希望了解SSE实时交互及大模型集成的开发者参考。
9505 60
|
11天前
|
缓存 Java 应用服务中间件
Spring Boot配置优化:Tomcat+数据库+缓存+日志,全场景教程
本文详解Spring Boot十大核心配置优化技巧,涵盖Tomcat连接池、数据库连接池、Jackson时区、日志管理、缓存策略、异步线程池等关键配置,结合代码示例与通俗解释,助你轻松掌握高并发场景下的性能调优方法,适用于实际项目落地。
172 4
|
17天前
|
监控 安全 Java
使用 @HealthEndpoint 在 Spring Boot 中实现自定义健康检查
Spring Boot 通过 Actuator 模块提供了强大的健康检查功能,帮助开发者快速了解应用程序的运行状态。默认健康检查可检测数据库连接、依赖服务、资源可用性等,但在实际应用中,业务需求和依赖关系各不相同,因此需要实现自定义健康检查来更精确地监控关键组件。本文介绍了如何使用 @HealthEndpoint 注解及实现 HealthIndicator 接口来扩展 Spring Boot 的健康检查功能,从而提升系统的可观测性与稳定性。
使用 @HealthEndpoint 在 Spring Boot 中实现自定义健康检查
|
5月前
|
前端开发 Java UED
从基础到进阶:Spring Boot + Thymeleaf 整合开发中的常见坑与界面优化
本文深入探讨了 **Spring Boot + Thymeleaf** 开发中常见的参数绑定问题与界面优化技巧。从基础的 Spring MVC 请求参数绑定机制出发,分析了 `MissingServletRequestParameterException` 的成因及解决方法,例如确保前后端参数名、类型一致,正确设置请求方式(GET/POST)。同时,通过实际案例展示了如何优化支付页面的视觉效果,借助简单的 CSS 样式提升用户体验。最后,提供了官方文档等学习资源,帮助开发者更高效地掌握相关技能。无论是初学者还是进阶用户,都能从中受益,轻松应对项目开发中的挑战。
223 0
|
5月前
|
存储 Java 数据库
Spring Boot 注册登录系统:问题总结与优化实践
在Spring Boot开发中,注册登录模块常面临数据库设计、密码加密、权限配置及用户体验等问题。本文以便利店销售系统为例,详细解析四大类问题:数据库字段约束(如默认值缺失)、密码加密(明文存储风险)、Spring Security配置(路径权限不当)以及表单交互(数据丢失与提示不足)。通过优化数据库结构、引入BCrypt加密、完善安全配置和改进用户交互,提供了一套全面的解决方案,助力开发者构建更 robust 的系统。
171 0
|
5月前
|
Java 开发者 微服务
Spring Cloud OpenFeign详解与实践
总结起来说,Spring Cloud OpenFeign提供了一种简单易懂且高效的方式去实现微服务之间通信.它隐藏了许多复杂性,并且允许开发者以声明式方式编写HTTP客户端代码.如果你正在开发基于Spring Cloud 的微服务架构系统,Spring Cloud Open Feign是一个非常好用且强大工具.
394 33
|
6月前
|
负载均衡 Dubbo Java
Spring Cloud Alibaba与Spring Cloud区别和联系?
Spring Cloud Alibaba与Spring Cloud区别和联系?
|
7月前
|
人工智能 SpringCloudAlibaba 自然语言处理
SpringCloud Alibaba AI整合DeepSeek落地AI项目实战
在现代软件开发领域,微服务架构因其灵活性、可扩展性和模块化特性而受到广泛欢迎。微服务架构通过将大型应用程序拆分为多个小型、独立的服务,每个服务运行在其独立的进程中,服务与服务间通过轻量级通信机制(通常是HTTP API)进行通信。这种架构模式有助于提升系统的可维护性、可扩展性和开发效率。
2302 2
|
6月前
|
JSON Java 数据格式
微服务——SpringBoot使用归纳——Spring Boot中的全局异常处理——拦截自定义异常
本文介绍了在实际项目中如何拦截自定义异常。首先,通过定义异常信息枚举类 `BusinessMsgEnum`,统一管理业务异常的代码和消息。接着,创建自定义业务异常类 `BusinessErrorException`,并在其构造方法中传入枚举类以实现异常信息的封装。最后,利用 `GlobalExceptionHandler` 拦截并处理自定义异常,返回标准的 JSON 响应格式。文章还提供了示例代码和测试方法,展示了全局异常处理在 Spring Boot 项目中的应用价值。
275 0
|
8月前
|
人工智能 安全 Java
AI 时代:从 Spring Cloud Alibaba 到 Spring AI Alibaba
本次分享由阿里云智能集团云原生微服务技术负责人李艳林主讲,主题为“AI时代:从Spring Cloud Alibaba到Spring AI Alibaba”。内容涵盖应用架构演进、AI agent框架发展趋势及Spring AI Alibaba的重磅发布。分享介绍了AI原生架构与传统架构的融合,强调了API优先、事件驱动和AI运维的重要性。同时,详细解析了Spring AI Alibaba的三层抽象设计,包括模型支持、工作流智能体编排及生产可用性构建能力,确保安全合规、高效部署与可观测性。最后,结合实际案例展示了如何利用私域数据优化AI应用,提升业务价值。
781 4