跳到主要内容

Reactor Extra

Doubao 中英对照 Reactor-Extra

目录

reactor-extra 构件包含额外的操作符和实用工具,面向有进阶需求的 reactor-core 用户,以及一些正在孵化中的操作符。

由于这是一个独立的构件,您需要显式地将其添加到构建中。以下示例展示了在 Gradle 中如何添加:

dependencies {
compile 'io.projectreactor:reactor-core'
compile 'io.projectreactor.addons:reactor-extra' 1
}
  • 在 core 之外额外添加 reactor extra 构件。有关为何在使用 BOM 时无需指定版本、在 Maven 中的用法以及其他详细信息,请参阅 获取 Reactor。

1. TupleUtils 与函数式接口​

reactor.function 包包含一些函数式接口,用于补充 Java 8 的 Function、Predicate 和 Consumer 接口,支持三到八个值。

TupleUtils 提供静态方法,作为这些函数式接口的 lambda 与对应 Tuple 上的相似接口之间的桥梁。

如下例所示,这让您可以轻松处理任意 Tuple 的各个独立部分:

.map(tuple -> {
String firstName = tuple.getT1();
String lastName = tuple.getT2();
String address = tuple.getT3();

return new Customer(firstName, lastName, address);
});

您可以将前述示例重写为:

.map(TupleUtils.function(Customer::new)); 1
  • [#1](因为 Customer 构造函数符合 Function3 函数式接口签名)

2. 使用 MathFlux 的数学操作符​

reactor.math 包包含 Flux 的一个特化版本 MathFlux,它提供数学操作符,包括 max、min、sumInt、averageDouble 等。

3. 调度器​

Reactor Extra 附带 ForkJoinPoolScheduler(位于 reactor.scheduler.forkjoin 包中):它使用 Java 的 ForkJoinPool 来执行任务。