如何处理Spring Reactive Programing中的两个Fluxes?

时间:2018-06-09 20:06:11

标签: project-reactor reactive-streams

我有两个助力

Flux<Foo> foo;
Flux<Bar> bar;

class Foo 
String id
String prop1
String barId


class Bar 
String barId
String color
boolean isInFoo

foo和bar都有barId属性。 foo的大小总是等于或小于bar的大小,但通常它远小于bar大小(Flux中的Bars数。例如,Foo可以代表一篮子Bar项目中的一些选定项目,尽管两者是不同的对象。

Bar有一个布尔标志isInFoo,默认值为false,如果Foo有barId,则设置为true。

如何遍历bar并查找每个bar在foo中是否有barId,如果是,则将isInFoo设置为true。

我也有可用

Mono<Foo> findByBarId(String barId) {}

除上述Flux<Foo> findAll() {}

之外

请注意,findByBarId和findAll是昂贵的数据库操作。

1 个答案:

答案 0 :(得分:2)

假设你有以下两种变化:

shuffle(List, Random)

您可以按如下方式修改Bar对象的Flux:

Flux<Foo> foos;
Flux<Bar> bars;