首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为Spring WebClient在每个请求的基础上配置超时?

为Spring WebClient在每个请求的基础上配置超时?
EN

Stack Overflow用户
提问于 2019-02-02 15:32:25
回答 1查看 3.1K关注 0票数 0

我知道Spring 5 webflux how to set a timeout on Webclient,但这会为所有请求配置全局超时。我正在寻找一种方法来根据每个请求配置超时。也就是这样的东西(不起作用的伪代码):

代码语言:javascript
复制
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 ):

代码语言:javascript
复制
HttpClient httpClient = HttpClient.create(). ...;

 WebClient webClient = WebClient.builder()
          .clientConnector(new ReactorClientHttpConnector(httpClient))
          .build();
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-02 17:12:47

这两个答案清楚地解释了这一点。

set-timeout-in-spring-webflux-webclient

spring-5-webflux-how-to-set-a-timeout-on-webclient

另外,如果你想改变这些选项,

你可以像下面这样做

代码语言:javascript
复制
 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()
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54494532

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档