reactor响应式编程记录

2023-12-06 10:22:09 浏览数 (2)

重要的两点:

Flux:(多个元素集合的返回)

Reactor 中,Flux 是表示包含零个或多个元素的异步序列的类。它是 Reactor 中的另一种响应式类型,与 Mono 相比,Flux 用于处理包含多个元素的异步计算。

关于 Flux 的一些关键特点:

  1. 异步序列Flux 代表的是一个异步序列,可以包含零个、一个或多个元素。这个序列可能是一个无限的流,也可能是一个有限的集合。
  2. 多个元素:与 Mono 不同,Flux 可以包含多个元素。它适用于处理一系列事件,例如从消息队列中接收消息、处理流式数据等。
  3. 响应式编程Flux 是 Reactor 响应式库的一部分,支持响应式编程模型。可以使用 Flux 来构建异步、非阻塞的代码,并可以与其他 Reactor 类型进行组合。
  4. 链式操作:可以通过链式调用操作符来组合和处理 Flux。这样的操作符包括 mapfilterflatMap 等,允许你对异步序列进行转换、过滤、映射等操作。

以下是一个简单的例子,演示了如何创建和使用 Flux

代码语言:javascript复制
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 的关键特点:

  1. 异步计算Mono 代表的是一个异步计算,它可以包含零个或一个元素。这个计算可能是一个异步操作,例如从数据库中读取数据、调用远程服务或处理其他事件。
  2. 零个或一个元素Mono 要么包含一个元素,要么为空。它类似于 Java 8 中的 Optional,但是 Mono 更强大,因为它专门用于异步操作。
  3. 响应式编程Mono 是 Reactor 响应式库中的一部分,支持响应式编程模型。它可以用于构建异步的、非阻塞的代码,并可以与其他 Reactor 类型(如 Flux)进行组合。
  4. 链式操作:可以通过链式调用操作符来组合和处理 Mono。这样的操作符包括 mapflatMapfilter 等,允许你对异步计算进行转换、过滤、映射等操作。

以下是一个简单的例子,演示了如何创建和使用 Mono

代码语言:javascript复制
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 订阅,处理输出和完成事件。

0 人点赞