繁体   English   中英

如何退回 Mono <list<object> &gt; 变成 HashMap? </list<object>

[英]How do I return a Mono<List<Object>> into a HashMap?

我有一个 <Integer, QueryObj> 的 hashmap,我需要对其进行迭代并调用外部服务。 我的外部服务的方法签名如下:

private Mono<List<ReturnedObj>> fetchList(QueryObj query)

我已经能够验证它是否正常工作并返回我需要的列表。 但是,我不确定我的下一步应该是什么,以及我在父方法中的响应类型应该是什么,以保持反应性实践。 基本上,我想将Map<Integer, Query>转换为Map<Integer, Mono<List<ReturnedObj>> 我想知道Map<Integer, Mono<List<ReturnedObj>>是否可能? 它需要是Mono<Map<K<V>>吗?

这是当前的代码片段——它不会抛出错误,而是返回一个空结果。 我认为命令式和反应式编程的混合不会等待fetchList()的结果来填充响应。

Map<Integer, QueryObj> queryMap = getQueries(); // setup
return queryMap.entrySet()
                    .stream()
                    .collect(Collectors.toMap(
                            e -> e.getKey(), e -> {
                                try {
                                     return fetchList(e.getValue());
                                } catch (Exception ex) {
                                    ex.printStackTrace();
                                }
                                return null;
                            }));
        }

非常感谢任何帮助。 我对此很陌生。

感谢所有人的建议 - 我最终找到了适合我的解决方案。 我最终使我的整个流程具有反应性(就像我从一开始就应该做的那样)并将我的方法的返回类型更改为 Mono<Map<Integer, List>。 我在 entrySet 和 collectMap 上使用了Flux.fromIterable()flatMap()来将结果汇总到 map 中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM