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方法,在此方法中初始化了元素存储队列以及发送元素给消费者消费