[000-01-008].第05节:OpenFeign高级特性-超时控制

news2024/11/16 23:43:39

我的后端学习大纲

SpringCloud学习大纲


在这里插入图片描述


1.1.OpenFeign超时的情况:

  • 在Spring Cloud微服务架构中,大部分公司都是利用OpenFeign进行服务间的调用,而比较简单的业务使用默认配置是不会有多大问题的,但是如果是业务比较复杂,服务要进行比较繁杂的业务计算,那后台很有可能会出现Read Timeout这个异常,因此定制化配置超时时间就有必要了
    在这里插入图片描述

1.2.搭建超时场景:

  • 1.服务提供方8001故意写暂停62秒钟程序

在这里插入图片描述

为什么写62秒?为什么写62秒?为什么写62秒?OpenFeign默认等待60秒钟,超时后报错

  • 2.服务调用方80写好捕捉超时异常:

在这里插入图片描述

@GetMapping("/feign/pay/get/{id}")
public ResultData getPayInfo(@PathVariable("id") Integer id){
    System.out.println("-------支付微服务远程调用,按照id查询订单支付流水信息");
    ResultData resultData = null;
    try{
        System.out.println("调用开始-----:"+DateUtil.now());
        resultData = payFeignApi.getPayInfo(id);
    } catch (Exception e) {
        e.printStackTrace();
        System.out.println("调用结束-----:"+DateUtil.now());
        ResultData.fail(ReturnCodeEnum.RC500.getCode(),e.getMessage());
    }
    return resultData;
}
  • 3.测试

在这里插入图片描述
在这里插入图片描述

  • 4.结论:OpenFeign默认等待60秒钟,超时后报错

1.3、超时处理配置:

a.官网介绍两个参数:

在这里插入图片描述

  • 1.默认OpenFeign客户端等待60秒钟,但是服务端处理超过规定时间会导致Feign客户端返回报错。为了避免这样的情况,有时候我们需要设置Feign客户端的超时控制,默认60秒太长或者业务时间太短都不好
  • 2.yml文件中开启配置:
    • connectTimeout:连接超时时间
    • readTimeout:请求处理超时时间

b.官网要求的超时配置:

在这里插入图片描述

1.4.超时配置实战:

a.全局配置

  • 1.全部配置:
server:
  port: 80

spring:
  application:
    name: cloud-consumer-openfeign-order
  cloud:
    consul:
      host: localhost
      port: 8500
      discovery:
        prefer-ip-address: true #优先使用服务ip进行注册
                service-name: ${spring.application.name}
    openfeign:
      client:
        config:
          default:
            #连接超时时间
                        connectTimeout: 3000
            #读取超时时间
                        readTimeout: 3000
  • 2.进行3秒测试:
    在这里插入图片描述

b.指定配置:

  • 1.指定单个服务配置超时时间举例
spring:
  cloud:
    openfeign:
      client:
        config:

          # default 设置的全局超时时间,指定服务名称可以设置单个服务的超时时间
          default:
             #连接超时时间
             connectTimeout: 4000
             #读取超时时间
             readTimeout: 4000

          # 为serviceC这个服务单独配置超时时间,单个配置的超时时间将会覆盖全局配置
          serviceC:
             #连接超时时间
             connectTimeout: 2000
             #读取超时时间
             readTimeout: 2000
  • 2.本模块中配置超时时间的关键内容
spring:
  cloud:
    openfeign:
      client:
        config:
          cloud-payment-service:
            #连接超时时间
                      connectTimeout: 5000
            #读取超时时间
                      readTimeout: 5000

在这里插入图片描述

  • 3.全部的yml文件内容:
server:
  port: 80

spring:
  application:
    name: cloud-consumer-openfeign-order
  ####Spring Cloud Consul for Service Discovery
  cloud:
    consul:
      host: localhost
      port: 8500
      discovery:
        prefer-ip-address: true #优先使用服务ip进行注册
                service-name: ${spring.application.name}
    openfeign:
      client:
        config:
         #default:
            #connectTimeout: 4000 #连接超时时间
                        #readTimeout: 4000 #读取超时时间
                   cloud-payment-service:
            connectTimeout: 8000 #连接超时时间
                        readTimeout: 8000 #读取超时时间

单独实现某个模块超时限制和全局设置全部模块超时限制共存的时候,单独模块这个粒度更细,是优先生效的!

  • 4.进行5秒测试:
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2133635.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

UiBot教程:实现复杂流程图的高效方法

在自动化测试和RPA(机器人流程自动化)领域,使用UiBot绘制复杂流程图是日常工作中常见的挑战之一。如何在繁杂的逻辑中保持高效?如何实现复杂流程的自动化设计而不迷失于其中?这是许多测试工程师和自动化开发者所面临的…

区块链之变:揭秘Web3对互联网的改变

传统游戏中,玩家的虚拟资产(如角色、装备)通常由游戏公司控制,玩家无法真正拥有这些资产或进行交易。而在区块链游戏中,虚拟资产通过去中心化技术记录在区块链上,玩家对其拥有完全的所有权,并能…

Loki 分布式日志中心服务

目录 Loki 是什么 Loki 配置文件介绍 Loki 安装 Promtail 配置文件介绍 Promtail 安装 Loki 整合 Grafana Loki 是什么 Loki 是一个专为日志聚合和查询设计的开源分布式日志管理系统,由 Grafana Labs 开发。它与 Prometheus 类似,但用于处理日志&a…

决策树实战

文章目录 一、入门基础案例二、基于sklearn的决策树模型2.1sklearn中的决策树实现2.2分类型决策树:DecisionTreeClassifier2.2.1重要参数2.2.2重要属性与接口2.2.3基本案例:wine葡萄酒数据集 2.3回归型决策树:DecisionTreeRegressor2.3.1重要…

大学选修课无人机航拍技术与技巧怎么样?

在当今这个视觉盛行的时代,无人机航拍技术以其独特的视角和非凡的创意能力,正逐步成为影视制作、新闻报道、地理测绘、环境监测及个人记录生活等领域不可或缺的工具。为此,本大学特设《无人机航拍技术与技巧》选修课,旨在通过系统…

Linux数据相关-第3个服务-实时同步sersync

1、实时同步 背景: 之前我们通过rsync 定时任务实现定时备份/同步对于NFS我们需要进行实时同步 选择 分布式存储.。使用实时同步服务NFS。选择公有云对象存储,七牛存储,腾讯存储COS 选择:nfs实时同步工具 inotify(bug需要书…

3D点云目标检测数据集标注工具 保姆级教程——CVAT (附json转kitti代码)

前言: 笔者尝试过很多3D标注软件都遇到很多问题,例如CloudCompare不适合做3D目标检测的数据集而且分割地面的时很繁琐;labelCloud没有三视图,视角难以调整标得不够精确;SUSTechPOINTS换帧麻烦、输出时存储在docker里面…

每日OJ_牛客_数字统计(简单模拟)

目录 牛客_数字统计(简单模拟) 解析代码 牛客_数字统计(简单模拟) [NOIP2010]数字统计_牛客题霸_牛客网 描述 请统计某个给定范围[L, R]的所有整数中,数字2出现的次数。 比如给定范围[2, 22],数字2在数…

sipp模拟uas发送reinvite

概述 freeswitch是一款简单好用的VOIP开源软交换平台。 在更新了sipp模拟update的配置方案之后,我希望对比一下fs对update和reinvite的处理流程。 本文档记录sipp的配置方案,该方案中包含了update和reinvite的信令。 环境 CentOS 7.9 freeswitch 1…

Linux入门攻坚——32、Mini Linux制作

制作一个mini linux,需要对linux的启动流程很熟悉,这里又一次学习Linux的启动过程。 启动流程:CentOS 6 / 5: POST -->BootSequence(BIOS) --> BootLoader --> kernel (ramdisk) --> rootfs --> /sbin/init …

MySQL——数据类型(二)

目录 一、日期与时间类型 1.1 date 1.2 datetime 1.3 timestamp 二、枚举和联合 2.1 enum 2.2 set 2.2.1 set 的插入 2.2.2 set 的查找 思维导图可以参考如下链接: 数据类型.xmind 夜夜亮晶晶/MySQL - Gitee.com 一、日期与时间类型 1.1 date 日期 yyy…

2024 年最佳 Chrome 验证码扩展,解决 reCAPTCHA 问题

验证码,特别是 reCAPTCHA,已成为在线安全的不可或缺的一部分。虽然它们在区分人类和机器人方面起着至关重要的作用,但它们也可能成为合法用户和从事网络自动化的企业的主要障碍。无论您是试图简化在线体验的个人,还是依赖自动化工…

easy-es动态索引支持

背景 很多项目目前都引入了es,由于es弥补了mysql存储及搜索查询的局限性,随着技术的不断迭代,原生的es客户端使用比较繁琐不直观,上手代价有点大,所以easy-es框架就面世了,学习成本很低,有空大…

Ubuntu下安装最新版本Apache2文件服务器

文章目录 1.最新版本Apache2安装2. Apache2配置2.1 端口配置2.2 创建软连接,生成文件服务2.3 隐藏Apache2服务版本号2.4 添加用户,设置Apache2文件服务密码2.5 重启Apache2服务3. 执行后效果 1.最新版本Apache2安装 注意:安装最新版本必须升级Ubuntu为20…

Linux 中System V IPC的共享内存

1. 概念介绍 System V IPC(Inter-Process Communication)是一组在UNIX系统中用于进程间通信的机制,包括共享内存、消息队列和信号量。这些机制由System V内核提供,并且它们的存在不依赖于创建它们的进程,而是由内核管…

JSON数组

数组作为JSON对象 ["Google","Runoob","Taobao"] JSON数组在中括号中书写。 中括号[]保存的数组是值(value)的有序集合。一个数组以左中括号[开始,右中括号]结束,值之间使用逗号,分隔…

【第28章】Spring Cloud之Sentinel注解支持

文章目录 前言一、注解埋点支持二、SentinelResource 注解三、实战1. 准备2. 纯资源定义3. 添加资源配置 四、熔断(fallback)1. 业务代码1.1 Controller1.2 Service1.3 ServiceImpl 2. 熔断配置3. 熔断测试 总结 前言 上一章我们已经完成了对Sentinel的适配工作,这…

物联网架构

1 三层架构 三层架构就像我们拿着一个设备,通过网络直接连接到服务器获取结果,步骤简单。 举个例子:智能家居的温度监控系统 1. 感知层(设备与传感器) 在智能家居系统中,温度传感器被安装在家里的各个房间…

数据结构C //线性表(顺序表)ADT结构及相关函数

数据结构(C语言版)严蔚敏 吴伟民 线性表(顺序表)ADT结构及相关函数 环境:Linux Ubuntu(云服务器) 工具:vim 代码块(头文件,函数文件,主文件&am…

JVM字节码与局部变量表

文章目录 局部变量表javap字节码指令分类 指令指令数据类型前缀加载和存储指令加载常量算术指令其他指令 字节码示例说明 局部变量表 每个线程的帧栈是独立的,每个线程中的方法调用会产生栈帧,栈帧中保存着方法执行的信息,例如局部变量表。 …