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