Reactor的Mono的使用介绍(一)

Spring5的已经支持Reactor模型,主要提供开发者使用的是Mono和Flux,在Reator遵循ReactiveStreams的标准的API的现,Rxjava是在Reactor以前实现反应流式库,Spring 5实现了 在Reactor-Netty基础上实现SpringMVC的框架命名为Spring Webflux,这是取代传统的servlet API的异步框架.java

接下来,主要了解下Reactive Streams的标准.git

  1. Publisher(发布者) 数据提供者,提供给订阅者使用github

  2. Subscription(订阅) 订阅者订阅的发布者提供的数据markdown

  3. Subscriber(订阅者) 订阅发布者的数据框架

  4. Processor(处理器) 这个接口集成了发布者和订阅者接口,因此处理器是发布者和订阅者均可以使用处理器. 异步

    上面简单的测试用例中,当执行subscribe方法时候,才回去真实调用订阅者去订阅发布者的元素.
    从Mono的subscribe方法中,能够看出这里默认是建立的是 LambdaMonoSubscriber订阅者,它实际上是对于consumer等函数式接口的封装类,而后执行subscribe方法传入该订阅者.
    若是publisher中间若是有优化的动做则会执行优化的操做,而后最后就是执行发布者的subscribe方法发起订阅.
    接下来会执行调用MonoJust的subscribe方法,真实执行有actual这个订阅者执行onSubscribe方法,这里订阅者对象实际 是ScalarSubscription标量的订阅对象.
    由Subscription对象调用request方法,向订阅者发送订阅元素请求元素个数的方法,默认是Long类型的最大值.
    而后执行LambdaMonoSubscriber订阅者的onNext对元素进行订阅.
    LambdaMonoSubscriber的onNext就会对订阅元素作消费者执行lambda函数的回调处理,打印出对应的元素数据.而且回调用onComplete,onError的调用.

    github上找了一个对于整个过程的时序图,便于你们理解 函数

总结
今天主要是对于Reactor的Mono的执行过程有了一个浅析,后面会更加深刻理解它背后的原理.测试

相关文章
相关标签/搜索