Reactor之FluxSink

ZShUn發表於2018-12-15

FluxSink支援傳送多個元素給下游消費者,且內建多種佇列作為資料緩衝儲存可以在初始化時指定儲存佇列。

程式碼:

        Flux.create(sink -> {
            //向下遊釋出元素
           sink.next("helloword");
           sink.next("helloword2");
           //結束髮布元素
           sink.complete();
        }).subscribe(System.out::println);//subscribe釋出訊息,System.out.println為消費者,消費訊息;
複製程式碼

效果:

​ 可以看到下圖,消費者消費了兩次。

Reactor之FluxSink

解析:

​ 最後我們來根據上述程式碼來解析整個執行過程是如何進行的。

  1. Flux.create會建立一個FluxCreate類,同時會傳入emitter,backpressure,PUSH_PULL三個引數,那麼這三個引數分別有什麼作用?

    emitter-> 元素生產者

    backpressure-> 元素儲存容器(佇列)

    PUSH_PULL->指定模式推拉

Reactor之FluxSink

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

Reactor之FluxSink

相關文章