zoukankan      html  css  js  c++  java
  • @FeignClient注解自定义接口超时时间

    问题描述

      每个微服务都有统一的接口超时时间设定,但也存在一些特殊的业务场景,其接口需要较长的超时时间,比如:导出excel报表、上传文件、拉取业务报表数据等等。此时,默认的超时设置就不能满足需求,故需要设置各自的超时时间。

    问题分析

      使用@FeignClient 时,可以通过contextId属性为不同的服务设置不同的超时时间,在config属性中指定某服务的超时时间即可。

    feign:
        client:
            config:
                default:  // 全局设置,default为任意服务
                    connectTimeout: 100 //毫秒,建立连接的超时时间,一般只在发现服务时用到
                    readTimeout: 2000 //毫秒,接口请求的超时时间
                remote-server-name: // contextId属性,指定调用remote-server-name服务时的超时时间,优先级高于全局设置
                    connectTimeout: 200
                    readTimeout: 3000
    

      feign.client.config.default开头的配置是所有服务级别的超时时间,配置局部超时需增加一个与default平行的、下游服务的服务名称。局部超时时间配置优先级高于全局配置。当配置了局部超时,只对指定的服务调用生效,所以当调用remote-server-user服务时,超时时间为3000 ms,而不是2000ms。

    问题解决

      把上述源码中的 remote-server-name改为remote-server-user,则在如下调用中,就设置了调用remote-server-user服务时的超时时间:

    @FeignClient(value = "user",contextId ="remote-server-user")
    public interface UserFeignService {
    
     @RequestMapping(value = { "/getUserById" })
     User getUserById(@RequestParam("userId") final Long userId);
    
    }
    

    小结

      工欲善其事,必先利其器。性能与效率是程序猿永恒的追求,对代码如此,对日常搬砖亦如此。Wiener只愿各位同仁Work Life Balance,效率高,错误少,回家早...


      读后有收获,小礼物走一走,请作者喝咖啡。

    赞赏支持

  • 相关阅读:
    UEFI手札
    ARM非对齐访问和Alignment Fault
    PCIE手札
    开始→运行(cmd)命令大全
    关于C#静态构造函数的几点说明
    网址
    python并发编程之多进程理论部分
    第九篇:网络编程
    第八篇:异常处理
    第七篇:面向对象高级
  • 原文地址:https://www.cnblogs.com/east7/p/15733092.html
Copyright © 2011-2022 走看看