首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spring WebFlux WebClient超时值()和WebClient()

Spring WebFlux WebClient超时值()和WebClient()
EN

Stack Overflow用户
提问于 2018-08-20 19:38:51
回答 1查看 2.6K关注 0票数 5

我有类似于以下示例的代码:

代码语言:javascript
复制
Mono<ResponseEntity<String>> result = webClient
    .post()
    .body(Mono.just(command), MyCommand.class)
    .exchange()
    .timeout(calculateTimeout(command))
    .flatMap(clientResponse -> clientResponse.toEntity(String.class));

春季文献说:

在使用exchange()时,您必须始终使用ClientResponse的任何主体或ClientResponse方法,以确保资源被释放,并避免HTTP池可能出现的问题。如果不需要响应内容,则可以使用bodyToMono(Void.class)。但是,请记住,如果响应有内容,则连接将被关闭,并且不会被放回池中。

问题:如果超时触发了TimeoutException (.)和上面的代码一样,我需要做一些明确的事情来确保所有的资源都被正确地释放了,还是上面的代码足够了?我想避免这里的记忆泄露。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-22 08:06:40

我不认为这在本案中是个问题。

当触发时,timeout将向上游cancel(),从而有效地关闭连接,而不将其返回到连接池。您不需要在这里做任何特别的事情,也不会有内存泄漏(除了已经位于反应堆内部队列中的缓冲区,这是Spring将在SPR-17025中解决的一个问题)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51937483

复制
相关文章

相似问题

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