使用文档请看 https://blog.51cto.com/morris131/6216398 个人觉得已经写得很清楚了。本文主要补充几个关键性概念:
1、Mono
是 Reactor 框架中的一个类,用于表示包含零个或一个元素的异步序列。它是 RxJava 的 Mono 类的 Reactor 版本。
在 Reactor 中,Mono
是一种实现了 Reactive Streams 规范的发布者(Publisher),它可以发送一个或零个元素,并提供了丰富的操作符来处理异步流。
以下是一些常见的 Mono
操作:
subscribe()
: 订阅 Mono,触发数据流的发布和处理。map(Function)
: 对 Mono 中的元素进行映射操作,返回一个新的 Mono。flatMap(Function)
: 对 Mono 中的元素进行转换操作,并返回新的 Mono 或 Publisher。filter(Predicate)
: 根据条件过滤 Mono 中的元素。defaultIfEmpty(T)
: 如果 Mono 中没有元素,则提供默认值。switchIfEmpty(Mono)
: 如果 Mono 中没有元素,则切换到另一个 Mono。onErrorReturn(T)
: 当出现错误时,提供一个默认值。
下面是一个简单的示例来说明 Mono
的使用:
import reactor.core.publisher.Mono;
public class MonoExample {
public static void main(String[] args) {
Mono<Integer> mono = Mono.just(42);
mono.map(n -> n * 2)
.subscribe(result -> System.out.println("Result: " + result));
}
}
在上述示例中,我们创建了一个 Mono
对象,并使用 .just()
方法传入一个整数值 42。然后,我们使用 map()
操作符将元素映射为原始值的两倍。最后,我们使用 subscribe()
方法订阅 Mono
并处理结果。在这种情况下,我们简单地打印出结果。
当我们运行这段代码时,将输出 “Result: 84”,这是原始值 42 的两倍。
总的来说,Mono
是 Reactor 框架中用于表示包含零个或一个元素的异步序列的类。它提供了丰富的操作符来处理异步流,并支持响应式编程的特性。
2、Flux
是 Reactor 框架中的一个类,用于表示包含零个或多个元素的异步序列。它是 Reactive Streams 规范的发布者(Publisher)实现,并提供了丰富的操作符来处理异步流。
Flux
类似于 Mono
,但可以发出多个元素而不仅限于单个元素。它可以用于处理集合、事件流、数据库查询结果等等。
以下是一些常见的 Flux
操作:
subscribe()
: 订阅 Flux,触发数据流的发布和处理。map(Function)
: 对 Flux 中的每个元素进行映射操作,返回一个新的 Flux。flatMap(Function)
: 对 Flux 中的每个元素进行转换操作,并返回一个新的 Flux 或 Publisher。filter(Predicate)
: 根据条件过滤 Flux 中的元素。take(n)
: 从 Flux 中提取前 n 个元素。mergeWith(Flux)
: 将两个 Flux 合并为一个 Flux。zipWith(Flux)
: 将两个 Flux 逐个对应地合并为一个 Flux。
下面是一个简单的示例来说明 Flux
的使用:
import reactor.core.publisher.Flux;
public class FluxExample {
public static void main(String[] args) {
Flux<Integer> flux = Flux.just(1, 2, 3, 4, 5);
flux.map(n -> n * 2)
.subscribe(result -> System.out.println("Result: " + result));
}
}
在上述示例中,我们创建了一个 Flux
对象,并使用 .just()
方法传入一些整数值。然后,我们使用 map()
操作符将每个元素映射为原始值的两倍。最后,我们使用 subscribe()
方法订阅 Flux
并处理结果。在这种情况下,我们简单地打印出结果。
当我们运行这段代码时,将输出 “Result: 2”、“Result: 4”、“Result: 6”、“Result: 8”、“Result: 10”,分别对应原始值的两倍。
总的来说,Flux
是 Reactor 框架中表示包含零个或多个元素的异步序列的类。它提供了丰富的操作符来处理异步流,并支持响应式编程的特性。
3、Mono.just()
是 Reactor 框架中的一个静态方法,用于创建一个包含单个元素的 Mono 对象。
Mono.just()
方法接受一个参数作为元素的值,并返回一个包含该元素的 Mono。可以使用该方法来创建一个已预先定义值的 Mono 对象。
下面是一个示例:
import reactor.core.publisher.Mono;
public class MonoExample {
public static void main(String[] args) {
Mono<Integer> mono = Mono.just(42);
mono.subscribe(value -> System.out.println("Value: " + value));
}
}
在上面的示例中,我们使用 Mono.just()
创建了一个包含整数值 42 的 Mono 对象。然后,我们通过使用 subscribe()
方法来订阅 Mono,并在每次发出元素时打印出它的值。
当我们运行这段代码时,将输出 “Value: 42”,表示我们成功创建了一个包含值 42 的 Mono,并且成功接收到该值。
总之,Mono.just()
是 Reactor 框架中的一个静态方法,用于创建一个包含单个元素的 Mono 对象。它可以用于在响应式编程中提供单个预定义值的异步序列。