SpringBoot 关于Feign的超时时间配置操作

目录
  • Feign的超时时间配置
    • feign 时间设置
  • Feign调用问题 \ 超时
    • 1、项目结构
    • 2、在其他微服务中 引入clientXX.jar
    • 3、feign调用超时

Feign的超时时间配置

feign 时间设置

  • contextId: 可以指定为某个接口进行单独的超时设置
@FeignClient(value = "user",contextId ="device")
public interface DeviceFeignService {

    @RequestMapping(value = { "/deviceId" })
    JsonResult<Device>
         getByDeviceId(@RequestParam("deviceId") final Long deviceId);
}
feign:
  client:
    config:
      #default代表所有服务
      default:
        #feign客户端建立连接超时时间
        connect-timeout: 10000
        #feign客户端建立连接后读取资源超时时间
        read-timeout: 20000
      #而service-test表示当调用service-test这个服务时,用下面的配置
      device:
        connect-timeout: 10000
        read-timeout: 20000

Feign调用问题 \ 超时

1、项目结构

每个微服务是provider情况下有一个client模块(里面含有定义好的feignclient 接口) 专门打包出去给其他微服务消费

这样的话 其他需要调用的微服务只要把这个client jar包引入即可,

2、在其他微服务中 引入clientXX.jar

这时候有一个坑, 就是 @EnableFeignClients这个注解默认是只扫描项目启动application下的包 如果不同项目可能包路径不一致, 所以@EnableFeignClients得指定你的client.jar里面的路径 或者两个项目中 共同的顶级路径 例如com.XX.cloud 同一个公司内部 顶层包结构应该是一致的

3、feign调用超时

默认feign调用超时是1000毫秒的 有断点就肯定超时

需要加上以下配置

feign.hystrix.enabled=true
#feign调用默认是1000毫秒=1秒   应该设置成更长时间1000 * 60 * 5  = 5分钟  add by six-vision
hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds=300000
hystrix.command.default.circuitBreaker.sleepWindowInMilliseconds=300000
hystrix.command.default.circuitBreaker.forceClosed=true
#hystrix.command.default.execution.timeout.enabled=false
#请求处理的超时时间  add by six-vision
ribbon.ReadTimeout=300000
ribbon.SocketTimeout=300000
#请求连接的超时时间 add by six-vision
ribbon.ConnectTimeout: 30000

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • springcloud之Feign超时问题的解决

    问题背景 最近公司项目有个功能需进行三层Feign调用,且还要调外部接口,延迟挺大,造成Feign一直提示Read timed out executing POST. feign.RetryableException: Read timed out executing POST http://****** at feign.FeignException.errorExecuting(FeignException.java:67) at feign.SynchronousMethodHandler

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

    FeignClient调用超时 出现问题的前提 SpringCloud间FeignClient调用出现ReadTimeOut的情况 FeignClient服务间调用的默认超时时间为2秒 网上查找的解决方案 关闭Hystrix(馊主意) 延长超时间(Spring众多超时时间配置繁多) 解决方案 为FeignClient添加自定义的超时配置,结合Nacos可控 话不多说,贴出源码 /** * FeignClient配置类 * * @author gralves * @date 2020/8/10 *

  • 解决feign调用接口不稳定的问题

    我就废话不多说了,大家还是直接看代码吧~ Caused by: java.net.SocketException: Software caused connection abort: recv failed at java.net.SocketInputStream.socketRead0(Native Method) at java.net.SocketInputStream.socketRead(SocketInputStream.java:116) at java.net.SocketIn

  • 基于springboot服务间Feign调用超时的解决方案

    解决springboot服务间Feign调用超时问题概述 1.起因 在完成项目功能需求的开发,经过自己测试以及通过测试组测试通过后,昨晚正式部署到线上环境进行正式运行前的最后一次的测试.但是在测试中,由A服务调用B服务接口时,***通过Feign调用(其实就是http请求,当A服务调用B服务时,如果不配置超时时间,那么A发出请求后,B应该立即响应,否则A服务会认为B已经断开连接)出现***连接超时的错误,错误信息:Read timed out- 2.原因 用idea开发debug模式调试代码时,

  • SpringBoot 关于Feign的超时时间配置操作

    目录 Feign的超时时间配置 feign 时间设置 Feign调用问题 \ 超时 1.项目结构 2.在其他微服务中 引入clientXX.jar 3.feign调用超时 Feign的超时时间配置 feign 时间设置 contextId: 可以指定为某个接口进行单独的超时设置 @FeignClient(value = "user",contextId ="device") public interface DeviceFeignService { @Request

  • Feign Client 超时时间配置不生效的解决

    目录 Feign Client 超时时间配置不生效 解决方案 问题描述 Feign Client的各种超时时间设置 1. Feign Client Configuration 2. Hystrix Configuration 3. Ribbon Configuration 4. OkHttp Client Configuration 5. 小结一下吧 Feign Client 超时时间配置不生效 解决方案 Feign Client 的 connectTimeout 和 readTimeout 需

  • 基于 Dubbo Admin 动态调整服务超时时间的操作步骤

    目录 开始之前 背景信息 操作步骤 规则详解 结果验证 Dubbo提供动态调整超时时间的服务治理能力,可以在无需重启应用的情况下,动态调整服务超时时间. Dubbo可以通过XML配置,注解配置,动态配置实现动态调整超时时间,这里主要介绍动态配置的方式,其他配置方式请参考旧文档配置 开始之前 请确保成功运行Dubbo-Admin 背景信息 在日常工作中会遇到各类超时配置,业务逻辑变更后,已有调用关系随着业务发展可能需要不断调整,相应服务接口响应时间的变化可能需要上线后才能确定.Dubbo-Admi

  • springcloud之Feign、ribbon如何设置超时时间和重试机制

    Feign.ribbon设置超时时间和重试机制 前言 我们在微服务调用服务的时候,会使用feign和ribbon,比如有一个实例发生了故障而该情况还没有被服务治理机制及时的发现和摘除,这时候客户端访问该节点的时候自然会失败. 所以,为了构建更为健壮的应用系统,我们希望当请求失败的时候能够有一定策略的重试机制,而不是直接返回失败. 先看一个配置: #预加载配置,默认为懒加载 ribbon: eager-load: enabled: true clients: zoo-plus-email zoo-

  • SpringBoot设置接口超时时间的方法

    SpringBoot设置接口访问超时时间有两种方式 一.在配置文件application.properties中加了spring.mvc.async.request-timeout=20000,意思是设置超时时间为20000ms即20s, 二.还有一种就是在config配置类中加入: public class WebMvcConfig extends WebMvcConfigurerAdapter { @Override public void configureAsyncSupport(fin

  • feign客户端设置超时时间操作

    我就废话不多说了,大家还是直接看代码吧~ /** * feign调用客户端 */ @FeignClient(name = "user", url = "${user.url}", configuration = MyFeignDecoder.class) public interface UserClient { @GetMapping("/rest/user/get/detail/{loginName}") JSONObject getUser

  • 解读springboot配置mybatis的sql执行超时时间(mysql)

    目录 一.yml全局配置 二.java配置类配置 总结 当某些sql因为不知名原因堵塞时,为了不影响后台服务运行,想要给sql增加执行时间限制,超时后就抛异常,保证后台线程不会因为sql堵塞而堵塞. 一.yml全局配置 单数据源可以,多数据源时会失效 二.java配置类配置 成功抛出超时异常. import com.alibaba.druid.pool.DruidDataSource; import com.alibaba.druid.spring.boot.autoconfigure.Drui

  • 详解Nginx服务器中配置超时时间的方法

    一.啥时候用到 用来设置请求资源和服务器返回的时间,保证一个请求占用固定时间,超出后报504超时!这样可以保证一个请求占用过长时间. 二.主要参数 使用nginx服务器如果遇到timeou情况时可以如下设置参数,使用fastcgi: fastcgi_connect_timeout 75;  链接 fastcgi_read_timeout 600;   读取 fastcgi_send_timeout 600;   发请求 这两个选项.          fastcgi_read_timeout是指

  • SpringBoot集成Druid监控页面最小化配置操作

    在项目中使用阿里的druid连接池,pom文件配置: <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>com.alibaba</groupId&g

随机推荐