0


FeignClient 超时设置

在使用 Spring Cloud OpenFeign 时,

  1. FeignClient

默认的超时时间可能不满足你的需求。你可以通过几种方式来自定义这些超时设置。以下是一些常见的方法:

1. 使用

  1. application.properties

  1. application.yml

  1. application.properties

  1. application.yml

文件中,你可以直接设置 Feign 的超时时间。Feign 底层使用 Ribbon 作为客户端负载均衡器,因此这些超时设置实际上是作用于 Ribbon 的。

application.properties 示例:

  1. # 连接超时时间,单位毫秒
  2. feign.client.config.default.connectTimeout=5000
  3. # 读取超时时间,单位毫秒
  4. feign.client.config.default.readTimeout=5000

如果你只想为特定的

  1. FeignClient

设置超时时间,可以将

  1. default

替换为对应的

  1. FeignClient

的名称:

  1. # 为名为 myFeignClient 的 FeignClient 设置超时
  2. feign.client.config.myFeignClient.connectTimeout=5000
  3. feign.client.config.myFeignClient.readTimeout=5000

application.yml 示例:

  1. feign:
  2. client:
  3. config:
  4. default:
  5. connectTimeout: 5000
  6. readTimeout: 5000
  7. myFeignClient:
  8. connectTimeout: 5000
  9. readTimeout: 5000

2. 使用 Java 配置

首先,创建一个 Feign 配置类,在这个类中你可以定义自定义的

  1. Request.Options

或其他 Feign 相关的配置 Bean:

  1. @Configuration
  2. public class MyFeignClientConfig {
  3. @Bean
  4. public Request.Options options() {
  5. return new Request.Options(10000, 60000); // 自定义连接超时和读取超时
  6. }
  7. // 你可以在这里定义其他 Feign 相关的配置 Bean
  8. }

然后,在

  1. FeignClient

注解中通过

  1. configuration

属性引用这个配置类:

  1. @FeignClient(name = "myFeignClient", configuration = MyFeignClientConfig.class)
  2. public interface MyFeignClient {
  3. // 定义你的远程调用方法
  4. @GetMapping("/some-endpoint")
  5. String someMethod();
  6. }

3. 方法上添加

  1. @PostMapping(value = "/feignUrl")
  2. Response<Boolean> feignMethod(@RequestBody Map<String, Object> params, @RequestHeader(required = false,name = "options") Request.Options options);

会给方法上增加一个入参,调用时候传入设置的超时时间

  1. Request.Options options = new Request.Options(60*1000,60*1000);
  2. Response<Boolean> res = feignService.feignMethod(params, options);

本文转载自: https://blog.csdn.net/suk_java/article/details/140380071
版权归原作者 一直到老到直一 所有, 如有侵权,请联系我们删除。

“FeignClient 超时设置”的评论:

还没有评论