上次寫了Mono的使用介紹後, 能夠知道Mono主要是針對的是 0個或者1個對象,而Flux則是0個或者多個集合元素.java
測試結果以下,前面瞭解了Mono的基本流程,在看Flux其實就是是和容易了,其實跟Java8的stream流式很像,只這是對於集合的一個一個元素的處理,這裏惟獨對於集合的時候,和涉及的回壓(back pressure)的概念,這也是它跟其餘的RXjava和Java Stream中一個比較重要的差別點,執行結果以下 首先,從定義幾種策略來看,主要有如下幾種:緩存
經過FluxCreate對象對於FluxSink, OverflowStrategy (回壓策略),CreateMode(模式:1.PUSH_ONLY推模式,2.PUSH_PULL 推拉模式) 接着會以LambdaSubscriber這個訂閱者. 而後執行FluxCreate的subscribe方法訂閱LambdaSubscriber,注意這裏是FluxCreate這個Publisher發起訂閱,實際是邏輯是訂閱者對發佈者進行訂閱. 執行對LambdaSubscriber訂閱時,這裏會建立Sink的模式,這裏描述的Sink其實就是元素的生產者. 能夠看到默認是buffer的Sink的回壓策略. 由訂閱者LambdaSubscriber執行onSubscribe對BufferAsyncSink這個sink的訂閱 而後執行BufferAsyncSink的request方法,進行元素消費 執行BufferAsyncSink的onRequestedFromDownstream方法是從下游往上游請求,而後執行drain執行對隊列元素的消費. 而後執行source實際對象是前面建立業務的Sink的lambda表達式,經過調用next方法執行產生元素的生產,讓訂閱者執行onNext對生產的元素進行消費 markdown
總結
今天主要對FluxCreate對於FluxSink的建立和使用流程分析,測試