簡體   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