前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >reactor响应式编程记录

reactor响应式编程记录

原创
作者头像
小石头
发布2023-12-06 10:22:09
1510
发布2023-12-06 10:22:09
举报
文章被收录于专栏:小石头小石头

重要的两点:

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 订阅,处理输出和完成事件。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档