上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所代表的代码逻辑。
对于具体细节,将在下面的章节中进行梳理。