我有一个方法,可以尝试使用WebClient返回Mono
@GetMapping("getMatch")
public Mono<Object> getMatch(@RequestParam Long matchId) {
return WebClient.create(OpenDotaConstant.BASE_URL).get()
.uri("/matches/{matchId}", matchId)
.accept(MediaType.APPLICATION_JSON)
.retrieve()
.bodyToMono(Object.class);
}
它可以返回我期望的结果。然后我尝试创建另一个方法来支持列表作为参数
@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));
}
但这一次返回一个奇怪的结果。
[
{
"scanAvailable": true
},
{
"scanAvailable": true
}
]
我是反应式编程新手,将流和单声道结合起来,然后转换为流量的正确方法是什么?
可能您需要的是以下内容:
@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);
}
而不是:
@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));
}
注意事项:
>
基本上,您希望getMatches
endpoint返回Flux
此外,不需要使用
parallelStream()
。因为您已经在使用reactor,所以一切都将在reactor调度器上并发执行。
使用spring 5,对于reactor,我们有以下需求。 什么方法可以转换单声道
我在玩r2dc for spring boot java应用程序。 我在想,如果可能的话,可以把通量转换成Mono来进行某种计算。 伪示例:
我的代码如下。我需要从mongo db获得每次旅行的车费,然后将每次旅行的所有车费相加,得到总车费。我被一种我不知道如何阅读的单声道音乐所困扰。我试着把它转换成通量,但我得到了通量 "'
我们使用的是Spring数据,当我们调用时,我们收到的是
有没有办法将Mono对象转换为javaPojo?我有一个web客户端连接到第三方REST服务,而不是返回<code>Mono</code>,我必须提取该对象并询问它。 我找到的所有示例都返回
我有一个服务电话返回单声道。现在,在给用户提供API响应的同时,我想发送一些响应。我试过用flatMap和地图,但它不起作用。它给了我一个空的身体作为回应。 谢谢你