Reactor之Flux的使用介紹(二)

上次寫了Mono的使用介紹後, 能夠知道Mono主要是針對的是 0個或者1個對象,而Flux則是0個或者多個集合元素.java

測試結果以下,前面瞭解了Mono的基本流程,在看Flux其實就是是和容易了,其實跟Java8的stream流式很像,只這是對於集合的一個一個元素的處理,這裏惟獨對於集合的時候,和涉及的回壓(back pressure)的概念,這也是它跟其餘的RXjava和Java Stream中一個比較重要的差別點,執行結果以下 首先,從定義幾種策略來看,主要有如下幾種:緩存

  1. IGNORE: 徹底忽略下游的回壓策略的請求
  2. ERROR: 當下遊沒法保持住的時候報Error異常
  3. DROP: 若是下游尚未準備好接收,丟失掉已經來的信號
  4. LATEST: 下游將會從上游獲取最新的信號.
  5. BUFFER: 若是下游沒法保持處理,則緩存全部信號.

經過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的建立和使用流程分析,測試

相關文章
相關標籤/搜索