Reactor - 扩展性
# 说明
reactor-extra 为满足 reactor-core 用户的更高级需求,提供了一些额外的操作符和工具。
由于这是一个单独的包,使用时需要明确它的依赖:
dependencies {
compile 'io.projectreactor:reactor-core'
compile 'io.projectreactor.addons:reactor-extra' // 1
}
1
2
3
4
2
3
4
- 添加 reactor-extra 的依赖。参考 获取 Reactor 了解为什么使用BOM的情况下不需要指定 version。
# TupleUtils 以及函数式接口
在 Java 8 提供的函数式接口基础上,reactor.function 包又提供了一些支持 3 到 8 个值的 Function、Predicate 和 Consumer。
TupleUtils 提供的静态方法可以方便地用于将相应的 Tuple 函数式接口的 lambda 转换为更简单的接口。
这使得我们在使用 Tuple 中各成员的时候更加容易,比如:
.map(tuple -> {
String firstName = tuple.getT1();
String lastName = tuple.getT2();
String address = tuple.getT3();
return new Customer(firstName, lastName, address);
});
1
2
3
4
5
6
7
2
3
4
5
6
7
可以用下面的方式代替:
.map(TupleUtils.function(Customer::new));
1
因为 Customer 的构造方法符合 Consumer3 的函数式接口标签。
# MathFlux 的数学操作符
reactor.math 包的 MathFlux 提供了一些用于数学计算的操作符,如 max、min、sumInt、averageDouble…
# 重复与重试工具
reactor.retry 包中有一些能够帮助实现 Flux#repeatWhen 和 Flux#retryWhen 的工具。入口点(entry points)就是 Repeat 和 Retry 接口的工厂方法。
两个接口都可用作可变的构建器(mutative builder),并且相应的实现(implementing) 都可作为 Function 用于对应的操作符。
# 调度器
Reactor-extra 提供了若干专用的调度器: - ForkJoinPoolScheduler,位于 reactor.scheduler.forkjoin 包; - SwingScheduler,位于 reactor.swing 包; - SwtScheduler,位于 reactor.swing 包。
编辑此页 (opens new window)
更新时间: 2024/11/02, 09:43:06