SpringCloud OpenFeign 如何为不同的接口配置不同的超时时间

项目版本描述

  • SpringCloud 微服务架构
  • SpringCloud H版
  • SpringBoot 2.2.x版本

问题描述

OpenFeign 默认的超时时间是1秒,但是可以在配置文件中使用ribbon进行配置,修改默认的超时时间,但是这个是针对所有的FeignClient进行配置生效的,在实际的项目中,同一个消费端要调用不同的服务端进行处理业务的,同时每一个服务端也会提供多个接口来处理,怎么在在消费端进行配置呢,为不同的服务端配置不同的超时时间,为不同的接口配置不同的超时时间?

期望

  • 在同一个消费端为不同的服务端提供者配置超时时间
  • 在同一个消费端的同一个服务端提供者里面的不同接口配置超时时间
阅读 9.1k
3 个回答

支持的,openfeign 10.3.0 以后都可以,注意是 openfeign 而不是spring-cloud-openfeign

interface MyClient {
   @RequestLine("GET /data")
   public MyResponse getMyData(Request.Options options);
}

Request.Options:

public static class Options {
    private final int connectTimeoutMillis;
    private final int readTimeoutMillis;
    private final boolean followRedirects;
        
    // .......

@_TNT_ 的基础上补充一下,SpringCloud OpenFeign 可以为 Client 指定超时时间,所以把同一个服务端提供者的不同超时时间的接口放在不同的 Client 就行了,通过 contextId 区分。不过我不清楚 SpringCloud H 版是否有这个特性

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题