Reactor 响应式编程简述 02
概述
有了 Reactive Streams 这种标准和规范,利用规范可以进行响应式编程。那再了解下什么是Reactive programming 响应式编程。响应式编程是基于异步和事件驱动的非阻塞程序,只是垂直通过在JVM内启动少量线程扩展,而不是水平通过集群扩展。这就是一个编程范例,具体项目中如何体现呢?
响应式项目编程实战中,通过基于 Reactive Streams 规范实现的框架 Reactor 一般是提供两种响应式API:
- Mono: 实现发布者,并返回 0 或 1 个元素
- Flux: 实现发布者,并返回 N 个元素
一、Reactor 的核心类
常用的主要有以下几个:
-
Mono
Mono 这个词本身有”单声道“ 的意思。
Mono 实现了 org.reactivestreams.Publisher 接口,所以是有着“发布者”的功能。代表 0 到 1 个元素的 发布者。 -
Flux
Flux 有“不断变化、波动”的意思。
Flux 同样实现了 org.reactivestreams.Publisher,所以也是有着“发布者”的功能 接口。Flux 代表 0 到 N 个元素的发布者。 -
Scheduler
代表背后驱动反应式流的调度器,通常由各种线程池实现。
二、函数编程接口说明
序号 | 接口函数名 | 说明 |
---|---|---|
1 | BiConsumer | 表示接收两个输入参数和不返回结果的操作。 |
2 | BiFunction | 表示接受两个参数,并产生一个结果的函数。 |
3 | BinaryOperator | 表示在相同类型的两个操作数的操作,生产相同类型的操作数的结果。 |
4 | BiPredicate | 代表两个参数谓词(布尔值函数)。 |
5 | BooleanSupplier | 代表布尔值结果的提供者。 |
6 | Consumer | 表示接受一个输入参数和不返回结果的操作。 |
7 | DoubleBinaryOperator | 代表在两个double值操作数的运算,并产生一个double值结果。 |
8 | DoubleConsumer | 表示接受一个double值参数,不返回结果的操作。 |
9 | DoubleFunction | 表示接受double值参数,并产生一个结果的函数。 |
10 | DoublePredicate | 代表一个double值参数谓词(布尔值函数)。 |
11 | DoubleSupplier | 表示表示接受double值参数,并产生一个结果的函数。值结果的提供者。 |
12 | DoubleToIntFunction | 表示接受一个double值参数,不返回结果的操作。 |
13 | DoubleFunction | 表示接受double值参数,并产生一个结果的函数。 |
14 | DoublePredicate | 代表一个double值参数谓词(布尔值函数)。 |
15 | DoubleSupplier | DoubleToIntFunction |
16 | DoubleToIntFunction | 表示接受double值参数,并产生一个int值结果的函数。 |
17 | DoubleToLongFunction | 表示上产生一个double值结果的单个double值操作数的操作。 |
18 | Function | 代表接受一个double值参数,并产生一个long值结果的函数。 |
19 | DoubleUnaryOperator | 表示上产生一个double值结果的单个double值操作数的操作。 |
20 | Function | 表示接受一个参数,并产生一个结果的函数。 |
21 | IntConsumer | 表示接受单个int值的参数并没有返回结果的操作。 |
22 | IntFunction | 表示接受一个int值参数,并产生一个结果的函数。 |
23 | IntPredicate | 表示一个整数值参数谓词(布尔值函数)。 |
24 | IntSupplier | 代表整型值的结果的提供者。 |
25 | IntToLongFunction | 表示接受一个int值参数,并产生一个long值结果的函数。 |
26 | IntUnaryOperator | 表示产生一个int值结果的单个int值操作数的运算。 |
27 | LongBinaryOperator | 表示在两个long值操作数的操作,并产生一个ObjLongConsumer值结果。 |
28 |