gpt4 book ai didi

spring-boot - Spring WebFlux WebClient 挂起并且 Mono.timeout 没有捕捉到它

转载 作者:行者123 更新时间:2023-12-05 05:14:59 25 4
gpt4 key购买 nike

我有相当简单的 Kotlin 代码,它总是阻塞并且从不返回:

WebClient
.create()
.get()
.uri("https://httpbin.org/status/200")
.exchange()
.flatMap {
println("Status ${it.statusCode()}")
it.bodyToMono(String::class.java)
}
.timeout(Duration.ofSeconds(5), Mono.just("fallback"))
.map { println("Response $it") } // never runs
.block()
  • httpbin 在这种情况下不返回任何内容(仅返回标题),那么 bodyToMono 是否会永远等待这里的内容?有没有可靠的方法来处理这种情况(阅读 Content-Length 不可靠)

  • 我用回退值设置了 Mono.timeout,为什么它没有涵盖它?

最佳答案

在这种情况下,httpbin.org 不会返回响应主体,因此 bodyToMono 方法将返回与 Mono.empty() 等效的方法。

如果您将 map { println("Response $it") }(永远不会运行,因为我们没有得到主体)更改为 doOnSuccess { log.info ("Response received") },打印“Response received”消息。

这意味着 Mono 没有卡住,它只是用一个空体完成。

关于spring-boot - Spring WebFlux WebClient 挂起并且 Mono.timeout 没有捕捉到它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52011465/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com