一、简介
Spring Cloud Feign Client 是一个方便的声明式 REST 客户端,我们用它来实现微服务之间的通信。

在这个简短的教程中,我们将展示如何设置自定义的 Feign 客户端连接超时,包括全局和每个客户端。

2. 默认值
Feign Client 是相当可配置的。

在超时方面,它允许我们配置读取和连接超时。连接超时是 TCP 握手所需的时间,而读取超时需要从套接字读取数据。

默认情况下,连接超时和读取超时分别为 10 秒和 60 秒。

3. 全局配置
我们可以通过 application.yml 文件中设置的 feign.client.config.default 属性设置应用程序中每个 Feign Client 的连接和读取超时:

feign:
  client:
    config:
      default:
        connectTimeout: 60000
        readTimeout: 10000

这些值表示发生超时之前的毫秒数。

4. 每个客户端
也可以通过命名客户端来为每个特定客户端设置这些超时:

feign:
  client:
    config:
      FooClient:
        connectTimeout: 10000
        readTimeout: 20000

而且,我们当然可以毫无问题地列出一个全局设置和每个客户端的覆盖。

5. 单个方法

@PostMapping("/test")
void test(@RequestParam Long id, Request.Options options);
Request.Options options = new Request.Options(5L,TimeUnit.SECONDS, 60L, TimeUnit.SECONDS, true);
feignClient.test(1L, options);