当前位置: 首页 > 知识库问答 >
问题:

在反应器3中将一个通量分裂成多个通量的最有效的方法

欧阳斌
2023-03-14
Source Flux: a->b->c->a->b->c
 ||
 vv
A Flux: a->a->a
B Flux: b->b->b
C Flux: c->c->c

我是反应编程的新手,我想出的唯一解决方案是share()+filter(),比如

val shared = flux.share();
shared.filter(x -> x.tag=='a').subscribe(a -> consumeA(a));
shared.filter(x -> x.tag=='b').subscribe(b -> consumeB(b));
shared.filter(x -> x.tag=='c').subscribe(c -> consumeC(c));

这是最好的解决方案,还是这个问题有更好的范式?

共有1个答案

云景焕
2023-03-14

如果组的数量相当少,那么您可以使用project reactor文档中引用的flux.groupby

例如:

Flux<String> flux = Flux.just("a1", "b1", "c1", "a2", "b2", "c2")
        .groupBy(s -> s.charAt(0))
        .concatMap(groupedFlux -> groupedFlux
                .startWith("Group " + groupedFlux.key()));

StepVerifier.create(flux)
        .expectNext("Group a", "a1", "a2")
        .expectNext("Group b", "b1", "b2")
        .expectNext("Group c", "c1", "c2")
        .verifyComplete();

可以使用groupedflux.key()更改为每个组执行的操作。

 类似资料:
  • 我用平面图附加通量,但如果我添加其他平面图,则只返回最后一个平面图。 我需要在通量上处理每个Mono函数,但我似乎无法让每个函数正确执行和返回。

  • 问题内容: 有没有办法将一个组件传递到另一个React组件?我想创建一个模型react组件,并传入另一个react组件以包含该内容。 编辑:这是一个reactJS codepen,说明了我正在尝试做的事情。http://codepen.io/aallbrig/pen/bEhjo 的HTML ReactJS 问题答案: 您可以用来渲染组件包含的任何子代:

  • 因此,我从文档中了解到,并行通量本质上是将通量元素划分为单独的轨道。(本质上类似于分组)。就线程而言,这将是调度程序的工作。让我们考虑一下这样的情况。所有这些都将在通过runOn()方法提供的同一个调度程序实例上运行。让我们考虑如下情况: 现在让我们打大约100个电话 如果我们使用parailFlux: 因此,如果我的理解是正确的,那么它似乎非常相似。那么,平行磁通相对于磁通的优势是什么?什么时候

  • 我现在正在使用Flux。我想创建一个通量 描述问题:我有一个工作案例,我有一个房屋清单和我所在的清单。我需要返回所有房屋的结果,我只会更改结果对象上的真/假标志。当然,第二个列表的元素可能更少。 有人能提出这样或其他的建议吗? }

  • 对于算法的最终审查,出现了这样一个问题: 由于连通组件本质上是图中的一个图,这意味着子图中的所有顶点必须从较大的图中移除,同时保持内部连通性。我能理解这种直觉,但很难把它转化成一个公式。 到目前为止,我得出的结论如下: 对于连通分量n,每个图Gn具有相应的顶点集{Vn},使得顶点集的内容在内部连接,而在外部保持不连接。 现在,每个{Vn}最多包含V*(V-1)条边。 如何用公式表示最大边数?

  • 问题内容: 我正在尝试将变量初始化为零,所以目前看起来像这样 它可以工作,但似乎有点多余。有没有更清洁的方法? 问题答案: 我通常会做 但是,这并不重要。这两个版本一目了然。