做农业的公司管理网站,大连网站代运营的公司有哪些,河津网站建设网站建设,义乌网一件代发在使用Feign Client时#xff0c;可以通过两种方式来设置超时时间#xff1a;
针对整个Feign Client设置超时时间
可以在Feign Client的配置类中通过修改Request.Options对象来设置超时时间。Request.Options对象有两个属性#xff0c;connectTimeoutMillis用于设置连接超…在使用Feign Client时可以通过两种方式来设置超时时间
针对整个Feign Client设置超时时间
可以在Feign Client的配置类中通过修改Request.Options对象来设置超时时间。Request.Options对象有两个属性connectTimeoutMillis用于设置连接超时时间readTimeoutMillis用于设置读取超时时间。
下面是一个示例
Configuration
public class FeignClientConfig {Beanpublic Request.Options requestOptions() {return new Request.Options(5000, 5000);}}在上面的示例中连接超时和读取超时时间都设置为5000毫秒。
针对单个Feign接口方法设置超时时间
可以在Feign接口方法上使用FeignClient注解的configuration属性来指定一个配置类然后在配置类中通过修改Request.Options对象来设置超时时间。
下面是一个示例
FeignClient(name example-client, configuration ExampleClientConfig.class)
public interface ExampleClient {GetMapping(/example)Headers(Content-Type: application/json)RequestLine(GET /example)void getExample();}//Configuration 不能全局配置
public class ExampleClientConfig {Beanpublic Request.Options requestOptions() {return new Request.Options(5000, 5000);}}在上面的示例中ExampleClient接口中的getExample()方法的超时时间被配置为5000毫秒。
需要注意的是Feign Client的超时时间设置只对请求的连接和读取阶段有效对于响应的处理时间是无效的。如果需要设置整个请求-响应的超时时间可以通过使用Hystrix或其他方式来实现。
不生效可能得原因
搜索一下项目里有没有对Options 进行重写如下所示 Beanpublic Options options() {return new Options();}Options 类
public static class Options {private final int connectTimeoutMillis;private final int readTimeoutMillis;public Options(int connectTimeoutMillis, int readTimeoutMillis) {this.connectTimeoutMillis connectTimeoutMillis;this.readTimeoutMillis readTimeoutMillis;}public Options() {this(10000, 60000);}public int connectTimeoutMillis() {return this.connectTimeoutMillis;}public int readTimeoutMillis() {return this.readTimeoutMillis;}}可以看到Options 类的默认构造函数里connectTimeout为10000ms,readTimeout为60000ms。你的配置文件里面的设置如果不生效可能就是被覆盖了。
feign:client:config:default:connectTimeout: 5000readTimeout: 1500001.我们需要强制重写它才会生效 PrimaryBeanpublic Request.Options requestOptions(ConfigurableEnvironment env) {String connectTime env.getProperty(feign.client.config.default.connectTimeout);String readTime env.getProperty(feign.client.config.default.readTimeout);if (connectTime ! null readTime ! null) {Integer connectTimeout Integer.valueOf(connectTime);Integer readTimeout Integer.valueOf(readTime);return new Request.Options(connectTimeout, readTimeout);}return new Request.Options();}2.单独针对某个方法设置超时时间。
FeignClient(name example-client, configuration ExampleClientConfig.class)
public interface ExampleClient {GetMapping(/example)Headers(Content-Type: application/json)RequestLine(GET /example)void getExample();}Configuration
public class ExampleClientConfig {Beanpublic Request.Options requestOptions() {return new Request.Options(5000, 5000);}}