FluxPeek是一个中间操作,peek译义为"偷窥",简单的理解就是对上下游的onSubscribe,onNext,onError,onComplete,request等进行增强操作,类似实现了spring aop的功能。
Flux.just("tom", "jack", "allen")
.filter(s -> s.length() > 3)
.map(s -> s.concat("@qq.com"))
.doOnNext(s -> {
System.out.println(Thread.currentThread().getName() + " " + s);
})
.subscribe(System.out::println);
为doOnNext为例,剖析一下FluxPeek的源码。结合Reactor3 源码解析二: 一个简单的例子(2),我们知道FluxPeek上游为MapSubscriber,下游直接面对消费者LambdaSubscriber。完整的调用流程如下:
生产者链式构建
1. FluxArray
2. FluxFilter(FluxArray)
3. FluxMap(FluxFilter(FluxArray))
4. FluxPeek</