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


相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
14天前
|
Java 开发者 微服务
手写模拟Spring Boot自动配置功能
【11月更文挑战第19天】随着微服务架构的兴起,Spring Boot作为一种快速开发框架,因其简化了Spring应用的初始搭建和开发过程,受到了广大开发者的青睐。自动配置作为Spring Boot的核心特性之一,大大减少了手动配置的工作量,提高了开发效率。
33 0
|
2月前
|
Java API 数据库
Spring Boot框架因其简洁的配置、快速的启动特性及丰富的功能集而备受开发者青睐
本文通过在线图书管理系统案例,详细介绍如何使用Spring Boot构建RESTful API。从项目基础环境搭建、实体类与数据访问层定义,到业务逻辑实现和控制器编写,逐步展示了Spring Boot的简洁配置和强大功能。最后,通过Postman测试API,并介绍了如何添加安全性和异常处理,确保API的稳定性和安全性。
38 0
|
2月前
|
Java API Spring
在 Spring 配置文件中配置 Filter 的步骤
【10月更文挑战第21天】在 Spring 配置文件中配置 Filter 是实现请求过滤的重要手段。通过合理的配置,可以灵活地对请求进行处理,满足各种应用需求。还可以根据具体的项目要求和实际情况,进一步深入研究和优化 Filter 的配置,以提高应用的性能和安全性。
|
25天前
|
人工智能 前端开发 Java
基于开源框架Spring AI Alibaba快速构建Java应用
本文旨在帮助开发者快速掌握并应用 Spring AI Alibaba,提升基于 Java 的大模型应用开发效率和安全性。
基于开源框架Spring AI Alibaba快速构建Java应用
|
12天前
|
存储 人工智能 Java
Spring AI Alibaba 配置管理,用 Nacos 就够了
本文通过一些实操案例展示了 Spring AI Alibaba + Nacos 在解决 AI 应用中一系列复杂配置管理挑战的方案,从动态 Prompt 模板的灵活调整、模型参数的即时优化,到敏感信息的安全加密存储。Spring AI Alibaba 简化了对接阿里云通义大模型的流程,内置 Nacos 集成也为开发者提供了无缝衔接云端配置托管的捷径,整体上极大提升了 AI 应用开发的灵活性和响应速度。
112 11
|
23天前
|
Java Spring
[Spring]aop的配置与使用
本文介绍了AOP(面向切面编程)的基本概念和核心思想。AOP是Spring框架的核心功能之一,通过动态代理在不修改原代码的情况下注入新功能。文章详细解释了连接点、切入点、通知、切面等关键概念,并列举了前置通知、后置通知、最终通知、异常通知和环绕通知五种通知类型。
30 1
|
2月前
|
人工智能 开发框架 Java
总计 30 万奖金,Spring AI Alibaba 应用框架挑战赛开赛
Spring AI Alibaba 应用框架挑战赛邀请广大开发者参与开源项目的共建,助力项目快速发展,掌握 AI 应用开发模式。大赛分为《支持 Spring AI Alibaba 应用可视化调试与追踪本地工具》和《基于 Flow 的 AI 编排机制设计与实现》两个赛道,总计 30 万奖金。
|
2月前
|
Java BI 调度
Java Spring的定时任务的配置和使用
遵循上述步骤,你就可以在Spring应用中轻松地配置和使用定时任务,满足各种定时处理需求。
142 1
|
3月前
|
SpringCloudAlibaba API 开发者
新版-SpringCloud+SpringCloud Alibaba
新版-SpringCloud+SpringCloud Alibaba
|
4月前
|
资源调度 Java 调度
Spring Cloud Alibaba 集成分布式定时任务调度功能
定时任务在企业应用中至关重要,常用于异步数据处理、自动化运维等场景。在单体应用中,利用Java的`java.util.Timer`或Spring的`@Scheduled`即可轻松实现。然而,进入微服务架构后,任务可能因多节点并发执行而重复。Spring Cloud Alibaba为此发布了Scheduling模块,提供轻量级、高可用的分布式定时任务解决方案,支持防重复执行、分片运行等功能,并可通过`spring-cloud-starter-alibaba-schedulerx`快速集成。用户可选择基于阿里云SchedulerX托管服务或采用本地开源方案(如ShedLock)
129 1
下一篇
无影云桌面