FluxSink支援傳送多個元素給下游消費者,且內建多種佇列作為資料緩衝儲存可以在初始化時指定儲存佇列。
程式碼:
Flux.create(sink -> {
//向下遊釋出元素
sink.next("helloword");
sink.next("helloword2");
//結束髮布元素
sink.complete();
}).subscribe(System.out::println);//subscribe釋出訊息,System.out.println為消費者,消費訊息;
複製程式碼
效果:
可以看到下圖,消費者消費了兩次。

解析:
最後我們來根據上述程式碼來解析整個執行過程是如何進行的。
-
Flux.create會建立一個FluxCreate類,同時會傳入emitter,backpressure,PUSH_PULL三個引數,那麼這三個引數分別有什麼作用?
emitter-> 元素生產者
backpressure-> 元素儲存容器(佇列)
PUSH_PULL->指定模式推拉

- 在建立完FluxCreate類後會呼叫其subscribe方法,在此方法中初始化了元素儲存佇列以及傳送元素給消費者消費
