贝利信息

响应式编程基础:Project Reactor 简介与核心概念

日期:2026-01-07 00:00 / 作者:舞夢輝影
Project Reactor 是基于 Reactive Streams 的Java响应式框架,核心为Mono(0/1元素)和Flux(0-N元素),支持背压、惰性操作符链、线程调度(如boundedElastic/parallel)。

Project Reactor 是 Java 生态中主流的响应式编程框架,基于 Reactive Streams 规范实现,专为构建高吞吐、低延迟、非阻塞的异步应用而设计。它不是对传统编程的替代,而是针对 I/O 密集型、事件驱动或流式数据处理场景的有力补充。

Reactor 的核心类型:Mono 与 Flux

Reactor 提供两个核心发布者(Publisher)类型,对应不同数据流形态:

二者都实现了 Publisher 接口,可被订阅,也提供丰富的操作符(operator)进行链式转换、组合与错误处理。

响应式流的关键机制:背压(Backpressure)

背压是 Reactive Streams 的核心约定,用于协调生产者与消费者之间的数据速率。当下游处理能力不足时,上游可暂缓发送或降级策略,避免内存溢出。

操作符链与惰性执行(Lazy Evaluation)

Reactor 的操作符(如 mapfilterflatMapretry)不会立即触发执行,而是在调用 subscribe() 或终端操作(如 block()toFuture())时才真正组装并启动数据流。

线程调度与 Schedulers

Reactor 不绑定特定线程模型,但提供 Schedulers 工具类统一管理执行上下文:

注意:WebFlux 应用中,Web 层默认运行在事件循环线程(如 Netty EventLoop),应避免在其中执行阻塞操作,必要时显式切换到 boundedElastic