什么是Reactor
Reactor
是基于Reactive Streams的第四代反应式库规范实现,用于在JVM
上构建非阻塞应用程序。Spring WebFlux
中集成的是Reactor3.0
。
官网地址:https://projectreactor.io/
Reactor
项目的主要核心库是reactor-core
,这是一个专注于Reactive Streams
规范的反应式库,java
版本要求java8+
。
Reactor
引入Publisher
的可组合反应式类型,但也提供了丰富的运算符词汇表:Flux
和Mono
。Flux
对象表示一个0..N
个元素的反应式序列。而Mono
对象表示单值或空(0..1)
结果。
2者的区别在类型中包含了一些语义信息,指示异步处理的大致基数。例如,一个HTTP
请求只产生一个响应,因此进行计数操作没有多大意义。因此,将这样一个HTTP
调用的结果表示为Mono<HttpResponse>
比将其表示为Flux<HttpResponse>
更有意义,因为它只提供了与0
项或1
项上下文相关的操作符。
更改处理的最大基数的操作符也切换到相关类型。例如,count
操作符存在于Flux
中,但它返回Mono<Long>
。