使用spring 5,对于reactor,我们有以下需求。
Mono<TheResponseObject> getItemById(String id){
return webClient.uri('/foo').retrieve().bodyToMono(TheResponseObject)
}
Mono<List<String>> getItemIds(){
return webClient.uri('/ids').retrieve().bodyToMono(List)
}
Mono<RichResonseObject> getRichResponse(){
Mono<List> listOfIds = Mono.getItemIds()
listOfIds.each({ String id ->
? << getItemById(id) //<<< how do we convert a list of ids in a Mono to a Flux
})
Mono<Object> someOtherMono = getOtherMono()
return Mono.zip((? as Flux).collectAsList(), someOtherMono).map({
Tuple2<List, Object> pair ->
return new RichResonseObject(pair.getT1(), pair.getT2())
}).cast(RichResonseObject)
}
什么方法可以转换单声道
请找到以下代码:第一次转换Mono
List<String> asList = Arrays.asList("A", "B", "C", "D");
Flux<String> flatMap = Mono.just(asList).flux().flatMap(a-> Flux.fromIterable(a));
或者您可以使用
平面地图
:
Flux<String> flatMapMany = Mono.just(asList).flatMapMany(x-> Flux.fromIterable(x));
这应该行得通。给定单声道中的字符串列表
Mono<List<String>> listOfIds;
Flux<String> idFlux = listOfIds
.flatMapMany(ids -> Flux.fromArray(ids.toArray(new String [0])));
那就更好了
listOfIds.flatMapMany(Flux::fromIterable)
我有一个方法,可以尝试使用WebClient返回Mono 它可以返回我期望的结果。然后我尝试创建另一个方法来支持列表作为参数 但这一次返回一个奇怪的结果。 我是反应式编程新手,将流和单声道结合起来,然后转换为流量的正确方法是什么?
我在玩r2dc for spring boot java应用程序。 我在想,如果可能的话,可以把通量转换成Mono来进行某种计算。 伪示例:
我的代码如下。我需要从mongo db获得每次旅行的车费,然后将每次旅行的所有车费相加,得到总车费。我被一种我不知道如何阅读的单声道音乐所困扰。我试着把它转换成通量,但我得到了通量 "'
我们使用的是Spring数据,当我们调用时,我们收到的是
有没有办法将Mono对象转换为javaPojo?我有一个web客户端连接到第三方REST服务,而不是返回<code>Mono</code>,我必须提取该对象并询问它。 我找到的所有示例都返回
我有一个服务电话返回单声道。现在,在给用户提供API响应的同时,我想发送一些响应。我试过用flatMap和地图,但它不起作用。它给了我一个空的身体作为回应。 谢谢你