整体学习概览
- 前置知识函数式编程+Lambda表达式实践、Java8 Stream Api的使用
- 响应式编程的原理和思想
- Reactive Stream的思想和Api实践
- Reactor思想和Api实践
- WebFlux的使用
- SpringData R2DBC
前置知识:函数式编程
函数式编程要点-CSDN博客
响应式编程原理和思想
- 全链路无阻塞
- 负压模式
- 消息驱动
- 事件驱动
- 观察者模式
- 函数式+声明式编程+链式调用
- 可编排装配流水线
Reactive Stream的思想和Api实践
官网:https://www.reactive-streams.org/
GitHub:GitHub - reactive-streams/reactive-streams-jvm: Reactive Streams Specification for the JVM
Reactive Stream是指Java 9中引入的一组规范,它旨在促进异步数据流处理的标准化。这组规范为创建可互操作的异步库提供了基础,使得开发人员可以更轻松地编写符合标准的、可替换的异步数据流处理组件。许多第三方库(如RxJava、Project Reactor等)都采用了这些规范,并且Java标准库中的一些类也开始支持Reactive Stream。
核心类
- Publisher(发布者)
- Subscriber(订阅者)
- Subscription(订阅)
- Processor(处理器)
Reactor思想和Api实践
官网:Project Reactor
官网核心Api文档:Reactor 3 Reference Guide
GitHub:GitHub - reactor/reactor: Reactor Bill Of Materials (tracking reactor-core, reactor-netty and more)
Reactor 的 API 主要包括以下几个核心部分:
Flux 类:表示一个包含零个或多个元素的异步序列。Flux 提供了一系列操作符,可以用于对序列进行转换、过滤、组合等操作。常用的操作符包括 map、 filter、 flatMap、 zip 等。
Mono 类:表示一个包含零个或一个元素的异步序列。Mono 也提供了类似于 Flux 的一系列操作符,用于处理单个元素的异步操作。
Schedulers 接口:Reactor 提供了一些默认的调度器,如 immediate、single、 parallel 等,用于定义异步任务在何时、何地执行。开发者可以根据需求选择合适的调度器来实现异步任务的调度和执行。
StepVerifier 类:用于测试 Reactor 流的工具类,可以验证流的行为是否符合预期,如期望的值、顺序等。
Operators 操作符:Reactor 提供了丰富的操作符,用于处理数据流的转换、过滤、组合等。一些常用的操作符包括 flatMap、 mergeWith、 filter、 map 等。
Context 类:用于在 Reactive 流之间传递共享的上下文信息,可以通过 Context 对象在流之间传递数据或状态。
Hooks 钩子:Reactor 提供了一些钩子函数,如 onAssembly、 onOperator、 onLastOperator 等,可以用于在操作符执行前、后以及流处理完毕后执行一些额外的操作。
待续。。。