[英]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.