一部の加入者が流動性のあるものを1つ購読し、この流動性のあるアイテムを加入者に送信すると、各加入者は異なる値を得ることができますか?例えば各加入者は、Flowableから異なる値を取得できますか?
、流動性が発する場合
0、1、2、3 ...
あるオブザーバー2,0取得し、他の観察者は次のように、ように1、3、取得しロードバランサ。
一部の加入者が流動性のあるものを1つ購読し、この流動性のあるアイテムを加入者に送信すると、各加入者は異なる値を得ることができますか?例えば各加入者は、Flowableから異なる値を取得できますか?
、流動性が発する場合
0、1、2、3 ...
あるオブザーバー2,0取得し、他の観察者は次のように、ように1、3、取得しロードバランサ。
ParallelFlowableは私がやりたいことに近いものです。 2.0.5以降で利用可能です。
このソリューションについてはどうですか?
@Test
public void testFlowableLoadBalancer() {
IntStream stream = IntStream.iterate(1, i -> i + 1);
Flowable<Integer> flowable = Flowable.create(e -> stream.forEach(i -> {
try {
Thread.sleep(1000);
} catch (InterruptedException ignored) {
}
e.onNext(i);
}), BackpressureStrategy.DROP);
ConnectableFlowable<Integer> cf = flowable.publish();
cf.filter(i -> i % 2 == 0).subscribe(i -> {
logger.info("[even] i = {}" , i);
});
cf.filter(i -> i % 2 == 1).subscribe(i -> {
logger.info("[ odd] i = {}" , i);
});
cf.connect();
}
出力:未解決の
2016-11-11 18:15:57,884 INFO data.Rx2Test - [ odd] i = 1
2016-11-11 18:15:58,892 INFO data.Rx2Test - [even] i = 2
2016-11-11 18:15:59,895 INFO data.Rx2Test - [ odd] i = 3
2016-11-11 18:16:00,900 INFO data.Rx2Test - [even] i = 4
問題:これはできませんオートバランス、他の答えを保留。
ありがとうございました。私の目的は、ある加入者が消費に困ったときに、他の加入者がアイテムを自動的に取得することです。たとえば、オブザーバーからネットワーク上のサーバーにデータを送信し、あるサーバーがダウンした場合、もう一方のサーバーはデータを別のサーバーに送信することができます。私はすでに解決策があるかどうか疑問に思います。私は急いではない。だから、私が解決策を見つけたら、それを分かち合うつもりです。 – otal