如何将 Mono<Map<String, Optional<String>>> 转换为 Flux<Tuple<String, Optional<String>>>
How to convert a Mono<Map<String, Optional<String>>> to a Flux<Tuple<String, Optional<String>>>
我将 WebFlux 与 Reactor 一起使用,并创建了一个休息服务,该服务使用 WebFlux webclient 聚合和转换来自内部服务调用的结果。
客户端returns一个Mono<Map<String, Optional<String>>>
我想在带有键值元素的 Flux 中反汇编,以便以后可以组合它。
我正在考虑转换
类型的客户端响应
Mono<Map<String, Optional<String>>>
到
Flux<Tuple<String, String>>
我知道您可以使用 responseMono.flatMapMany(Flux::fromIterable)
将 Mono<List<String>>
转换为 Flux<String>
但我找不到处理地图的方法。
您可以使用 mono.flatMapMany(map -> Flux.fromIterable(map.entrySet()))
,这会给您一个 Flux<Entry<String, Optional<String>>>
。
如果您明确希望它是 Tuple
,而不是 Entry
,那么只需执行:
mono.flatMapMany(map -> Flux.fromIterable(map.entrySet()))
.map(e -> Tuples.of(e.getKey(), e.getValue()));
我将 WebFlux 与 Reactor 一起使用,并创建了一个休息服务,该服务使用 WebFlux webclient 聚合和转换来自内部服务调用的结果。
客户端returns一个Mono<Map<String, Optional<String>>>
我想在带有键值元素的 Flux 中反汇编,以便以后可以组合它。
我正在考虑转换
类型的客户端响应Mono<Map<String, Optional<String>>>
到
Flux<Tuple<String, String>>
我知道您可以使用 responseMono.flatMapMany(Flux::fromIterable)
Mono<List<String>>
转换为 Flux<String>
但我找不到处理地图的方法。
您可以使用 mono.flatMapMany(map -> Flux.fromIterable(map.entrySet()))
,这会给您一个 Flux<Entry<String, Optional<String>>>
。
如果您明确希望它是 Tuple
,而不是 Entry
,那么只需执行:
mono.flatMapMany(map -> Flux.fromIterable(map.entrySet()))
.map(e -> Tuples.of(e.getKey(), e.getValue()));