I have a method that try use WebClient to return a Mono
@GetMapping(\"getMatch\")
public Mono
Probably, what you need is the following:
@GetMapping("getMatches")
public Flux<Object> getMatches(@RequestParam String matchesId) {
List<Long> matchesList = JSON.parseArray(matchesId, Long.class);
return Flux.fromStream(matchesList.stream())
.flatMap(this::getMatch);
}
Instead of:
@GetMapping("getMatches")
public Flux<Object> getMatches(@RequestParam String matchesId) {
List<Long> matchesList = JSON.parseArray(matchesId, Long.class);
return Flux.fromStream(matchesList.parallelStream().map(this::getMatch));
}
Notes:
Basically, you expect getMatches
endpoint to return Flux<Object>
. However, as it is written - it actually returns Flux<Mono<Object>>
, therefore you see the strange output. To get Flux<Object>
, I suggest, first, create Flux<Long>
that are match ids, and then flatMap
the result of calling getMatch
(that returns Mono<Object>
), this finally gives Flux<Object>
.
Also, there is no need to use parallelStream()
. Because you're already using reactor, everything will be performed concurrently on reactor scheduler.