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