重要的两点:
Flux:(多个元素集合的返回)
Reactor 中,Flux
是表示包含零个或多个元素的异步序列的类。它是 Reactor 中的另一种响应式类型,与 Mono
相比,Flux
用于处理包含多个元素的异步计算。
关于 Flux
的一些关键特点:
- 异步序列:
Flux
代表的是一个异步序列,可以包含零个、一个或多个元素。这个序列可能是一个无限的流,也可能是一个有限的集合。 - 多个元素:与
Mono
不同,Flux
可以包含多个元素。它适用于处理一系列事件,例如从消息队列中接收消息、处理流式数据等。 - 响应式编程:
Flux
是 Reactor 响应式库的一部分,支持响应式编程模型。可以使用Flux
来构建异步、非阻塞的代码,并可以与其他 Reactor 类型进行组合。 - 链式操作:可以通过链式调用操作符来组合和处理
Flux
。这样的操作符包括map
、filter
、flatMap
等,允许你对异步序列进行转换、过滤、映射等操作。
以下是一个简单的例子,演示了如何创建和使用 Flux
:
javaCopy code
Flux<String> flux = Flux.just("Apple", "Banana", "Cherry");
flux
.map(fruit -> fruit.toUpperCase())
.filter(uppercased -> uppercased.startsWith("A"))
.subscribe(
value -> System.out.println(value),
error -> System.err.println("Error: " error),
() -> System.out.println("Done")
);
在这个例子中,Flux.just("Apple", "Banana", "Cherry")
创建了一个包含三个水果的 Flux
。然后,使用 map
转换为大写,使用 filter
过滤以 "A" 开头的水果,最后通过 subscribe
订阅,处理输出和完成事件。
Mono(单个元素的返回)
在 Reactor 中,Mono
是一种表示包含零个或一个元素的异步计算结果的类。它是 Reactor 中的响应式类型之一。Mono
这个名称是来自于希腊语单词 "monos",意味着 "单一" 或 "单个"。
以下是一些关于 Mono
的关键特点:
- 异步计算:
Mono
代表的是一个异步计算,它可以包含零个或一个元素。这个计算可能是一个异步操作,例如从数据库中读取数据、调用远程服务或处理其他事件。 - 零个或一个元素:
Mono
要么包含一个元素,要么为空。它类似于 Java 8 中的Optional
,但是Mono
更强大,因为它专门用于异步操作。 - 响应式编程:
Mono
是 Reactor 响应式库中的一部分,支持响应式编程模型。它可以用于构建异步的、非阻塞的代码,并可以与其他 Reactor 类型(如Flux
)进行组合。 - 链式操作:可以通过链式调用操作符来组合和处理
Mono
。这样的操作符包括map
、flatMap
、filter
等,允许你对异步计算进行转换、过滤、映射等操作。
以下是一个简单的例子,演示了如何创建和使用 Mono
:
javaCopy code
Mono<String> mono = Mono.just("Hello, Reactor!");
mono.subscribe(
value -> System.out.println(value), // 输出: Hello, Reactor!
error -> System.err.println("Error: " error),
() -> System.out.println("Done")
);
在这个例子中,Mono.just("Hello, Reactor!")
创建了一个包含字符串的 Mono
。然后,通过 subscribe
订阅,处理输出和完成事件。