java - 将多个通量合二为一
问题描述
我想在我的 Spring Boot 服务中将多个 Flux 结果收集到一个中。我的方法:
private Flux<VMachineResourceResponse> getDataForPhysicalMachineProtection(
ResourcesWrapper resources, UUID groupId) {
Flux<VMachineResourceResponse> result = Flux.empty();
resources
.getHypervResources()
.forEach(
resource -> {
Flux<VMachineResourceResponse> protectedResourcesForAgentAndId =
hypervAgentService.getProtectedResourcesForAgentAndId(
groupId, resource.getAgentId());
result.mergeWith(protectedResourcesForAgentAndId); //maybe that way???
});
return result;
}
怎么做?
解决方案
你应该把你的列表粘贴到一个Flux
中,然后flatMap
在它上面获取每个新的Flux
. 将flatMap
自动将所有内容“压平”为一个Flux
以下示例应显示该概念:
public Flux<String> getData() {
final List<String> strings = new ArrayList<>();
strings.add("Foo");
strings.add("Bar");
return Flux.fromIterable(strings)
.flatMap(this::get);
}
private Flux<String> get(String s) {
return Flux.just(s + "Bar", s + "Foo");
}
推荐阅读
- angularjs - 如何在 AngularJs 常量中使用全局常量
- html - 如果单击更改按钮,为什么背景颜色没有改变?
- python - 加速 Ising-/Potts-Model Monte-Carlo 的 Python/Numpy 代码
- machine-learning - 使用 20000 个样本进行 MLPClassifier 模型精度微调
- tree - 接受二叉树并返回总和的函数
- android - app:backgroundTint 对 ViewGroup 没有影响
- php - MySQL 是否具有针对基于 URL 的攻击的内置注入攻击保护?
- zlib - zlib 在 Z_STREAM_END 之后继续膨胀
- python - 在您为应用程序应用迁移之前,项目可能无法正常工作,但迁移不起作用
- html - 溢出自动不适用于弹性容器