返回顶部
首页 > 资讯 > 精选 >基于FeignClient怎么调用超时的处理方案
  • 790
分享到

基于FeignClient怎么调用超时的处理方案

2023-06-20 14:06:21 790人浏览 安东尼
摘要

这篇文章给大家分享的是有关基于FeignClient怎么调用超时的处理方案的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。FeignClient调用超时出现问题的前提SpringCloud间FeignClient调

这篇文章给大家分享的是有关基于FeignClient怎么调用超时的处理方案的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

FeignClient调用超时

出现问题的前提

SpringCloud间FeignClient调用出现ReadTimeOut的情况

FeignClient服务间调用的默认超时时间为2秒

网上查找的解决方案

关闭Hystrix(馊主意)

延长超时间(spring众多超时时间配置繁多)

解决方案

为FeignClient添加自定义的超时配置,结合Nacos可控

话不多说,贴出源码

@Componentpublic class FeignClientConfig { // 连接超时    @Value("${service.feign.connectTimeout:60000}")    private int connectTimeout;        // 数据读取超时    @Value("${service.feign.readTimeOut:60000}")    private int readTimeout; // 构造自定义配置类    @Bean    public Request.Options options() {        return new Request.Options(connectTimeout, readTimeout);    }}

FeignClient使用自定义配置类

// configuration字段使用自定义配置@FeignClient(value = "xxx", configuration = FeignClientConfig.class)public interface XxxFeignClient {...

启动服务A/B,进行服务调用,断点59秒(不超时),断点60秒(ReadTimeOut).可以发现配置是生效的

建议

不同的服务可以配置不同的超时时间

FeignClient可以抽成公共工具包进行使用

缺点

太麻烦,觉得调试配置麻烦的可以使用~

FeignClient超时配置

Feign 其实是一种包装,把复杂的 Http 请求包装成我们只需写一两个注解就可以搞定的地步。他底层使用的还是 Ribbon。

Feign 的调用,总共分为两层,即 Ribbon 的调用和 Hystrix(熔断处理) 的调用,高版本的 Hystrix 默认是关闭的。

Ribbon 超时配置

基于FeignClient怎么调用超时的处理方案

如果出现上图的信息,说明是 Ribbon 超时了,需要在配置文件中进行控制处理:

### Ribbon 配置ribbon:  # 连接超时  ConnectTimeout: 2000  # 响应超时  ReadTimeout: 5000

Hystrix 超时配置

开启 Hystrix

### Feign 配置feign:  # 开启断路器(熔断器)  hystrix:    enabled: true

此时,如果超时,汇报一下错误:

基于FeignClient怎么调用超时的处理方案

默认 Hystrix 超时配置:

基于FeignClient怎么调用超时的处理方案

为了避免超时,我们可以根据业务情况来配置自己的超时时间,此处配置熔断时间为:5000/毫秒。注意:建议 Ribbon 的超时时间不要大于 Hystrix 的超时时间

### Hystrix 配置hystrix:  # 这样将会自动配置一个 Hystrix 并发策略插件的 hook,这个 hook 会将 SecurityContext 从主线程传输到 Hystrix 的命令。  # 因为 Hystrix 不允许注册多个 Hystrix 策略,所以可以声明 HystrixConcurrencyStrategy  # 为一个 Spring bean 来实现扩展。Spring Cloud 会在 Spring 的上下文中查找你的实现,并将其包装在自己的插件中。  shareSecurityContext: true  command:    default:      circuitBreaker:        # 当在配置时间窗口内达到此数量的失败后,进行短路。默认20个        requestVolumeThreshold: 1        # 触发短路的时间值,当该值设为5000时,则当触发 circuit break 后的5000毫秒内都会拒绝request        # 也就是5000毫秒后才会关闭circuit。默认5000        sleepWindowInMilliseconds: 15000        # 强制打开熔断器,如果打开这个开关,那么拒绝所有request,默认false        forceOpen: false        # 强制关闭熔断器 如果这个开关打开,circuit将一直关闭且忽略,默认false        forceClosed: false      execution:        isolation:          thread:            # 熔断器超时时间,默认:1000/毫秒            timeoutInMilliseconds: 5000

感谢各位的阅读!关于“基于FeignClient怎么调用超时的处理方案”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

--结束END--

本文标题: 基于FeignClient怎么调用超时的处理方案

本文链接: https://lsjlt.com/news/297144.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 基于FeignClient怎么调用超时的处理方案
    这篇文章给大家分享的是有关基于FeignClient怎么调用超时的处理方案的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。FeignClient调用超时出现问题的前提SpringCloud间FeignClient调...
    99+
    2023-06-20
  • 基于FeignClient调用超时的处理方案
    FeignClient调用超时 出现问题的前提 SpringCloud间FeignClient调用出现ReadTimeOut的情况 FeignClient服务间调用的默认超时时间为2...
    99+
    2024-04-02
  • 基于springboot服务间Feign调用超时的解决方案
    解决springboot服务间Feign调用超时问题概述 1、起因 在完成项目功能需求的开发,经过自己测试以及通过测试组测试通过后,昨晚正式部署到线上环境进行正式运行前的最后一次的测...
    99+
    2024-04-02
  • restTemplate超时处理的策略方案
    目录简单定制restTemplate超时处理pom.xml main: CustomConnectionKeepAliveStrategy: 简单定制r...
    99+
    2024-04-02
  • 调用OpenAi出现连接超时的解决方案
    在向https://api.openai.com/v1/completions发起http请求之前,使用java.net包下面的Proxy进行代理。 代码如下: public class OpenAiApi { public Stri...
    99+
    2023-09-03
    java
  • 基于BCEWithLogitsLoss样本不均衡的处理方案
    最近在做deepfake检测任务(可以将其视为二分类问题,label为1和0),遇到了正负样本不均衡的问题,正样本数目是负样本的5倍,这样会导致FP率较高。 尝试将正样本的loss权...
    99+
    2024-04-02
  • Python怎么调用ChatGPT制作基于Tkinter的桌面时钟
    本文小编为大家详细介绍“Python怎么调用ChatGPT制作基于Tkinter的桌面时钟”,内容详细,步骤清晰,细节处理妥当,希望这篇“Python怎么调用ChatGPT制作基于Tkinter的桌面时钟”文章能帮助大家解决疑惑,下面跟着小...
    99+
    2023-07-05
  • Activity/Fragment结束时处理异步回调的解决方案
    头疼的IllegalArgumentException在Android开发的过程中,涉及到与UI相关的操作只能在主线程执行,否则就会抛出以下异常:android.view.ViewRoot$CalledFromWrongThreadExce...
    99+
    2023-05-31
    activity fragment 异步回调
  • Feign调用服务各种坑的处理方案
    1.编写被调用服务 @RefreshScope @RestController public class XXXController extends BaseController...
    99+
    2024-04-02
  • SpringMVC基于配置的异常处理器怎么用
    这篇文章主要介绍了SpringMVC基于配置的异常处理器怎么用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇SpringMVC基于配置的异常处理器怎么用文章都会有所收获,下面我们一起来看看吧。一、基于配置的异常...
    99+
    2023-06-30
  • Java中怎么处理异步超时的问题
    这篇文章主要讲解了“Java中怎么处理异步超时的问题”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java中怎么处理异步超时的问题”吧!一天,我在改进多线程代码时被Future.get()卡...
    99+
    2023-06-17
  • 关于WCF异常处理解决方案是怎样的
    这期内容当中小编将会给大家带来有关关于WCF异常处理解决方案是怎样的,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。异常处理在我们的程序中是不可缺少的,异常可以反馈我们信息,如果还不知道WCF异常的朋友请看...
    99+
    2023-06-17
  • 基于JQuery的Ajax方法怎么用
    这篇文章主要为大家展示了“基于JQuery的Ajax方法怎么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“基于JQuery的Ajax方法怎么用”这篇文章吧。如...
    99+
    2024-04-02
  • Golang基于泛化调用与Nacos实现Dubbo代理的方法是什么
    这篇“Golang基于泛化调用与Nacos实现Dubbo代理的方法是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Gol...
    99+
    2023-07-05
  • SpringCloud基于Feign的可编程式接口怎么调用
    今天小编给大家分享一下SpringCloud基于Feign的可编程式接口怎么调用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧...
    99+
    2023-06-30
  • 日处理数据量超10亿:友信金服基于Flink构建实时用户画像系统的实践
    导读:当今生活节奏日益加快,企业面对不断增加的海量信息,其信息筛选和处理效率低下的困扰与日俱增。由于用户营销不够细化,企业 App 中许多不合时宜或不合偏好的消息推送很大程度上影响了用户体验,甚至引发了用...
    99+
    2024-04-02
  • Java处理延时任务的常用几种解决方案
    目录前言数据库轮询原理优缺点Java延迟队列Reids监听失效key创建监听类,实现MessageListener接口RocketMq延迟消息总结前言 项目中经常会遇到如下的需求: ...
    99+
    2024-04-02
  • Apache实时处理Java文件的最佳方案是什么?
    Apache是一个非常流行的开源软件基金会,其软件产品被广泛应用于各个领域。其中,Apache Flink是一个流处理引擎,它提供了丰富的API,可以用于实时处理Java文件。那么,Apache Flink是否是最佳的方案呢?本文将为您解...
    99+
    2023-10-22
    文件 实时 apache
  • Spring MVC基于注解的使用之JSON数据处理的方法
    目录1.JSON数据交互1.1 JSON概述1.1.1 对象结构1.1.2 数组结构1.2 JSON数据转换2. HttpMessageConverter2.1 @RequestBo...
    99+
    2024-04-02
  • Python3中使用urllib的方法详解(header,代理,超时,认证,异常处理)
    我们可以利用urllib来抓取远程的数据进行保存哦,以下是python3 抓取网页资源的多种方法,有需要的可以参考借鉴。 1、最简单 import urllib.request response = u...
    99+
    2022-06-04
    详解 异常 方法
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作