Rx java 每个订阅者能否从一个FlowTable中获得不同的值?

Rx java 每个订阅者能否从一个FlowTable中获得不同的值?,rx-java,rx-java2,Rx Java,Rx Java2,当一些订阅者订阅一个flowable并且该flowable向订阅者发送项目时,每个订阅者可以获得不同的值吗 例如,如果一个可流动的 0,1,2,3 一个观察者得到0、2,另一个观察者得到1、3等等,就像负载平衡器一样。这个解决方案怎么样 @Test public void testFlowableLoadBalancer() { IntStream stream = IntStream.iterate(1, i -> i + 1); Flowable<Inte

当一些订阅者订阅一个flowable并且该flowable向订阅者发送项目时,每个订阅者可以获得不同的值吗

例如,如果一个可流动的

0,1,2,3


一个观察者得到0、2,另一个观察者得到1、3等等,就像负载平衡器一样。

这个解决方案怎么样

  @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();
  }

问题未解决:无法自动平衡,等待其他答案。

此解决方案如何

  @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();
  }

未解决的问题:无法自动平衡,等待其他答案。

并行流更接近我想要做的事情。
它从2.0.5开始提供。

并行流更接近我想要做的事情。
它从2.0.5开始提供。

谢谢您的回答。我的目的是,当一个订阅者在消费方面遇到麻烦时,另一个订阅者会自动获得项目。例如,当我想通过网络将数据从观察者发送到服务器时,一台服务器停机,另一台观察者可以将数据发送到另一台服务器。我只是想知道是否已经有了解决办法。我不着急。因此,当我找到解决方案时,我将与大家分享。谢谢你的回答。我的目的是,当一个订阅者在消费方面遇到麻烦时,另一个订阅者会自动获得项目。例如,当我想通过网络将数据从观察者发送到服务器时,一台服务器停机,另一台观察者可以将数据发送到另一台服务器。我只是想知道是否已经有了解决办法。我不着急。因此,当我找到解决方案时,我将与大家分享。