Java编程方法论:响应式Spring Reactor 3设计与实现
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

第2章 对Flux的探索

Flux是可以发出0到N个元素的生产者。它实现了Publisher<T>接口,而此接口的核心方法是public void subscribe(Subscriber<?super T>s),下面就来探索一下它的源码细节。

首先看看相关的实现效果图,如图2-1所示。

图2-1

由图2-1可知,在产生订阅后,主要执行以下这几个逻辑。

◎ 首先,在产生订阅后,会调用生产源Flux的subscribe方法,接着调用订阅者Subscriber的onSubscribe方法,此时执行的是我们针对Subscription定义的一些代码逻辑Consumer<?super Subscription>,即图中三角形所代表的代码逻辑。该代码逻辑主要用于调用Subscription#request方法,结合前面对背压机制的介绍,可以知道,Flux内部进行了背压设计。

◎ 接着执行我们定义的onNext方法,即图中圆形所代表的代码逻辑。

◎ 如果生产源的所有元素都能够正常下发完毕,则调用我们定义的onComplete方法,即图中方块I所代表的代码逻辑。

◎ 如果生产源下发的元素在消费过程中产生了异常,则调用我们定义的onError方法,即图中方块X所代表的代码逻辑。

对于具体细节,将在下面的章节中进行梳理。