1 Reactor简介
Reactor是一个用于JVM的完全非阻塞的响应式编程框架,具备高效的需求管理能力。与Java8函数式API直接集成(CompletableFuture,Stream以及Duration)。它提供了异步序列API Flux(用于N个元素)和Mono(用于0|1个元素)。适用于微服务架构,并且完整支持响应式编解码。
2 响应式编程
Reactor是响应式编程范式的实现。
响应式编程通常作为面向对象编程中的观察者模式的一种扩展。Reactor主要是弥补一些经典的JVM异步方式所带来的不足,此外还关注几个方面:- 可编排性以及可读性
- 使用丰富的操作符阿里处理形如流的数据
- 在订阅(subscribe)之前什么都不会发生
- 背压(backpressure)具体来说就是消费者能够反向告知生产者生产内容的速度的能力
- 高层次的抽象,从而达到并发无关的效果
3 Reactor核心特性
3.1 Flux,包含0-N个元素的异步序列
Flux<T>是一个能够发出0到N个元素的标准的Publisher<T>,它会被一个”error”或者“completion”信号终止,因此,一个flux的可能结果是一个value、completion或error。
3.2 Mono,异步的0-1结果
Mono<T>是一种特殊的Publisher<T>,它最多发出一个元素,然后终止于一个onComplete信号或一个onError信号。它只适用其中一部分可用于Flux的操作。比如,(两个Mono的)结合类操作可以忽略其中之一而发出另一个Mono,也可以将两个都发出,对于后一种情况会切换为一个Flux。
本文基于:://github.com/get-set/reactor-core/blob/master-zh/src/docs/index.html#flux
推荐写的比较好的一篇文章: