У меня очень простой контроллер Webflux, который просто выполняет GET-запрос к другой конечной точке службы и возвращает простой список JSON. Проблема в том, что удаленная конечная точка всегда вызывается дважды.
Эта проблема не возникает, если я использовал Mono в качестве возвращаемого типа контроллера вместо Flux!
// This calls "/remote/endpoint" twice!
@GetMapping("/blabla")
fun controller() : Flux<JsonNode> {
return webClient.get()
.uri("/remote/endpoint")
.retrieve()
.bodyToMono(JsonNode::class.java)
.flatMapIterable { body ->
body.get("data")
}
}
// This calls "/remote/endpoint" once.
@GetMapping("/blabla")
fun controller() : Mono<JsonNode> {
return webClient.get()
.uri("/remote/endpoint")
.retrieve()
.bodyToMono(JsonNode::class.java)
.map { body ->
body.get("data")
}
}