【发布时间】:2019-01-06 11:29:32
【问题描述】:
在休息请求中,我使用 Spring WebClient 向 Web 服务发送另一个请求,并希望将结果返回给调用者:
return webClient.post()
.uri(url)
.body(...)
.retrieve()
.bodyToMono(String::class.java)
.map { ResponseEntity.ok(it) }
现在 Web 服务返回 HTTP 错误状态代码,我收到以下错误:
java.lang.IllegalStateException: Only one connection receive subscriber allowed.
当返回状态码 200 时,不会抛出任何错误。
我也试过自己检查状态并抛出异常,但行为还是一样:
return webClient.post()
.uri(url)
.body(...)
.retrieve()
.onStatus(HttpStatus::isError) { clientResonse ->
clientResonse.bodyToMono(String::class.java)
.map { RuntimeException(it) }
}
.bodyToMono(String::class.java)
.map { ResponseEntity.ok(it) }
我做错了什么?
代码示例在 Kotlin 中,但我假设每个 Java 开发人员都能阅读:)
【问题讨论】:
标签: java kotlin reactive-programming spring-webflux project-reactor