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 来执行任务。