Java 9反应流。为什么需要处理器?

时间:2019-04-26 16:43:20

标签: java-9 reactive

我一直在Java中看到反应流概念,该概念倾向于标准化javaRX和Spring反应概念。一切都很好,除了要对流进行某种转换,您需要实现一个或多个处理器。我的问题是关于处理器接口处理器的需求,该处理器扩展了订阅服务器,发布者
看来您在进行转换的过程中传递了乐趣,然后将其耦合到生产者和订阅者,仅此而已!但是出现了一些问题:

  1. 您如何处理来自客户端/订户的背压。如果客户要求在处理程序中不知道的10个元素,则应进一步询问生产者多少个元素。我看过要求1或Int.MAX元素的示例
  2. 这有什么毛病?因为从我观察到的结果来看,它只是在执行转换的过程中带来了乐趣,所以乐趣被传递给了构造函数,并且当项目流过它时便被调用(仅此而已)。那么我们不能直接在生产者或订户中实现吗? (我知道您想分离问题,但可以消除问题1)

您可以在此处看到一个基本示例:https://www.concretepage.com/java/java-9/java-reactive-streams。 在处理器方法onNext上,您可以看到处理器要求1个元素,这让我感到困扰:来自订户端的背压怎么办?如果订户一次要100个元素怎么办?处理器不应该只专注于处理方面,也不应该要求元素吗?

@Override
public void onNext(Article item) {
    subscription.request(1);
    submit(function.apply(item));
}

谢谢!

0 个答案:

没有答案