Java Spring Webflux Mono:无法将结果收集为列表
我正在使用SpringWebFlux来消费另一个服务,并尝试将结果聚合到不同输入组合的列表中。 但有一点我无法订阅并将结果转换为列表Java Spring Webflux Mono:无法将结果收集为列表,java,stream,spring-webflux,Java,Stream,Spring Webflux,我正在使用SpringWebFlux来消费另一个服务,并尝试将结果聚合到不同输入组合的列表中。 但有一点我无法订阅并将结果转换为列表 此方法将获取一个映射并遍历该映射,然后使用不同的输入组合调用另一个服务。 但无法在getAPrice()中继续完成我想要的:( 输入: public Mono getAPrice(){ 返回 Mono.create(monoSink->{ getActiveMonths() .entrySet().stream() .flatMap(e->getContractP
但无法在getAPrice()中继续完成我想要的:( 输入:
public Mono getAPrice(){
返回
Mono.create(monoSink->{
getActiveMonths()
.entrySet().stream()
.flatMap(e->getContractPrice(e.getKey(),e.getValue())
/*卡在这里,不知道如何订阅和获取AP对象并将其收集为列表*/
});
}
输出:
expected:List[APrice]
/*方法工作正常,返回正确输入组合的单声道*/
公共价格(字符串键、字符串值){
返回Mono.create(monoSink->{
acServiceWebClient.getPrice(键,值)
.subscribe(aPrice->monoSink.success(aPrice),
错误->{
monoSink.error(错误);
});
});
}
输出:
{
“id”:11,
“曲线名称”:“NT”,
“月份”:“2010年3月”,
“价格”:160.17,
“状态”:“活动”
}
私有映射getActiveMonths()
{
Map hm=新的HashMap();
hm.put(“键1”、“值1”)
hm.put(“键2”、“值2”)
返回hm;
}
期待得到一些建议来完成getAPrice()以更好的方式,如果我采用了错误的方法,纠正我也会很有帮助。谢谢你,你的工作实际上不需要一个
MonoSink
。你可以做的是从你的getActiveMonths
入口集创建一个Flux
,然后用这个e>调用方法getActivePrice
ntrySet的键
和值
。因此,您的getAPrice实际上应该是
公共Mono@Ishank,非常感谢您的宝贵意见。我已根据您的意见进行了必要的更改。只需了解,如果getContractPrice返回Mono,我们还需要在此处更改哪些内容。@busywithJava已更新了答案,以解决您在评论中的查询。
private Map<String,String> getActiveMonths()
{
Map hm = new HashMap();
hm.put("key1","value1")
hm.put("key2","value2")
return hm;
}