1. 响应式编程的本质
响应式编程本质上是一个发布-订阅模式,其核心类如下图所示。
其中Publisher是发布者、Subscriber是订阅者、Subscription记录发布-订阅关系。
其相互调用关系如下图所示。
2. 响应式编程的处理流程
2.1 响应式编程的处理阶段
响应式编程的处理流程分为以下几个阶段。
- 声明阶段 : 定义发布者,通过装饰模式对发布者进行层层包装
- subcribe阶段: 定义订阅者,通过装饰模式对订阅者进行层层包装,订阅者的包装顺序跟发布者是相反的
- onSubcribe阶段(subscription阶段):建立发布-订阅关系
- request阶段:从最末级订阅者逐级驱动,触发发布者进行消息发布。(属于pull)
- process阶段:逐级触发订阅者进行消息处理。(属于push)
2.2通过示例演示处理流程
Flux.just("tom", "jack", "allen")
.map(s -> s.concat("@"))
.filter(s -> s.startsWith("tom"))
.subscribe(System.out::println);
以上语句执行时各阶段的处理过程如下图所示。