1全局配置通过HTTPClient1.1ResponseTimeoutHttpClientclient=HttpClient.create().responseTimeout(Duration.ofSeconds(1));WebClientwebClient=WebClient.builder().clientConnector(newReactorClientHttpConnector(client)).build);1.2连接超时HttpClientclient=HttpClient.create().option(ChannelOption.CONNECT_TIMEOUT_MILLIS,10000);默认是30s,如果在给定的时间内连接不能成功建立或丢弃,会抛出ConnectTimeoutException,也可以设置一些tcp参数HttpClientclient=HttpClient.create().option(ChannelOption.SO_KEEPALIVE,true).option(EpollChannelOption.TCP_KEEPIDLE,300).option(EpollChannelOption.TCP_KEEPINTVL,60).option(Read3_KEEPC)TCPOption,1。和WriteTimeoutHttpClientclient=HttpClient.create().doOnConnected(conn->conn.addHandler(newReadTimeoutHandler(10,TimeUnit.SECONDS)).addHandler(newWriteTimeoutHandler(10)));1.4SSL/TLSTimeoutHttpClient.create().secure(规范->spec.sslContext(SslContextBuilder.forClientt()).defaultConfiguration(SslProvider.DefaultConfigurationType.TCP).handshakeTimeout(Duration.ofSeconds(30)).closeNotifyFlushTimeout(Duration.ofSeconds(10)).closeNotifyReadTimeout(Duration.ofSeconds(10)));握手超时默认为10sclose_notifyflush默认3sread默认0s1.5ProxyTimeoutHttpClient.create().proxy(spec->spec.type(ProxyProvider.Proxy.HTTP).host("proxy").port(8080).connectTimeoutMillis(30000));connectTimeoutMillis默认10s2Request-Level配置2.1ResponseTimeoutwebClient.get().uri("https://baeldung.com/path").httpRequest(httpRequest->{HttpClientRequestreactorRequest=httpRequest.getNativeRequest();reactorRequest.responseTimeout(Duration.ofSeconds(2));});2.2响应式TimeoutwebClient.get().uri("https://baeldung.com/path").retrieve().bodyToFlux(JsonNode.class).timeout(Duration.ofSeconds(5));
