2016-11-10 57 views
1

當某些訂閱者訂閱一個流動賬戶並且這個流動賬戶向訂戶發送物品時,每個訂戶是否可以得到不同的值?每個用戶可以從一個Flowable獲得不同的值嗎?

例如,如果可流動的發射

0,1,2,3 ...

一個觀察者得到0,2和其他觀察者得到1,3,等,像負載均衡器。

回答

0

ParallelFlowable更接近我想要做的事情。 自2.0.5起可用。

0

這個解決方案如何?

@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 

問題未解決:這不能自動平衡,對其他的答案懸而未決。

+0

謝謝你的回答。我的目的是,當一個用戶遇到消費麻煩時,另一個用戶自動獲得物品。例如,當我想通過網絡將觀察者的數據發送到服務器,並且一個服務器發生故障時,另一個觀察者可以將數據發送到另一個服務器。我只是想知道是否有解決方案。我不急。所以,當我找到解決方案時,我會分享它。 – otal

相關問題