我知道Spring 5 webflux how to set a timeout on Webclient,但这会为所有请求配置全局超时。我正在寻找一种方法来根据每个请求配置超时。也就是这样的东西(不起作用的伪代码):
WebClient client = ...
// Call 1
client.timeout(5, TimeUnit.SECONDS).contentType(APPLICATION_JSON).syncBody(..).exchange(). ..
// Call 2
client.timeout(4, TimeUnit.SECONDS).contentType(APPLICATION_JSON).syncBody(..).exchange(). timeout函数是用来演示我所追求的东西的。我怎样才能做到这一点?同样重要的是,在超时时适当地清理资源。
如果有任何不同,我将使用Netty (reactor-netty 0.8.4 difference ):
HttpClient httpClient = HttpClient.create(). ...;
WebClient webClient = WebClient.builder()
.clientConnector(new ReactorClientHttpConnector(httpClient))
.build();发布于 2019-02-02 17:12:47
这两个答案清楚地解释了这一点。
set-timeout-in-spring-webflux-webclient
spring-5-webflux-how-to-set-a-timeout-on-webclient。
另外,如果你想改变这些选项,
你可以像下面这样做
TcpClient tcpClient = TcpClient.create()
.option(ChannelOption.CONNECT_TIMEOUT_MILLIS, 1000)
.doOnConnected(connection ->
connection.addHandlerLast(new ReadTimeoutHandler(10))
.addHandlerLast(new WriteTimeoutHandler(10)));
return this.webClient
.mutate()
.clientConnector(new ReactorClientHttpConnector(HttpClient.from(tcpClient)))
.build()
.get()https://stackoverflow.com/questions/54494532
复制相似问题