В Reactor 3, каков наиболее эффективный способ разделения гетерогенного потока на несколько потоков путем сопоставления с образцом? (И последующие операции на каждом потоке могут быть очень разными)
Например,
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));
Это лучшее решение или есть лучшая парадигма для этой проблемы?