先人一步
VMware 提供培训和认证,助你加速进步。
了解更多我很高兴代表 Reactor 团队宣布 reactor-core 3.1.0.RC1
已经发布了 ?。这是本月底发布 3.1 GA 版本(支持 Spring 5 的长期支持版本)的重要一步!
同时发布的还有许多其他版本,它们都捆绑在 Bismuth-M4
发布列车 (Release Train) 和 BOM 中
reactor-test
, reactor-extra
, reactor-adapter
和 reactor-logback
都已发布 3.1.0.RC1
版本reactor-netty
在新的 0.7.0.M2
里程碑版本中进行了重大更新并修复了 bugreactor-kafka
已发布 1.0.0.M4
里程碑版本要获取此版本,最佳方法是使用 BOM,如参考指南此处所述。请务必阅读关于里程碑的部分(将其对应到 Bismuth-M4)。
由于我们自 MILESTONE 1 以来没有发布太多公告,让我们深入了解一下变化最大的 reactor-core
3.1.0 中的主要变化。
我们保留了在 3.1.0.RELEASE 之前进行 API 更改的选项,这使我们能够收集到来自社区和 Spring Framework 团队的宝贵反馈。因此,我们得以完善 API,并提出了一些我们认为 100% 适合与 Spring Framework 5.0 长期并行发展的内容。
这些变化自 Reactor 3.1.0 的第一个里程碑版本以来一直在逐步进行,你可以前往 Github 上的发布说明 查看完整的变更日志,特别是如果你自 3.0.7.RELEASE
以来尚未升级到任何新版本的话。
以下是这些变化的非穷尽性概述
Mono#flatMap
已变为 flatMapMany
,而 Mono.then (Mono<V> then(Function<T, Mono<V> other)
) 现在是 flatMap
。(M1)Mono.when
静态方法和 Mono#and
现在分别命名为 zip
和 zipWith
,与 Flux
中对应的名称保持一致。请注意,when
和 and
方法在 3.1.0.RC1 中仍然存在,但它们专门用于仅关心多个 Publisher
对象完成的情况(返回类型为 Mono<Void>
)。(RC1)Flux#firstEmitting
静态方法现在名为 first
,而 Flux#firstEmittingWith
实例方法现在名为 or
。(RC1)Publisher
的操作符变体或异步执行与无后缀操作符相同任务的变体,使用 *When
后缀。(M1)delayError
参数的变体都已移除,取而代之的是添加了一个以 DelayError
为后缀的别名(例如 flatMapDelayError
)。(M1)*Millis
变体(接受 long
类型的时长)都已移除,取而代之的是基于 Duration
的变体。(M1)这些更改通常还有一个好处,即在使用 lambda 表达式时(特别是对于 Kotlin 等语言),消除了关于应用哪个方法重载的任何歧义。
Mono
有几个处理任务完成的 API。它们基本上忽略元素(如果存在)并仅传播 onComplete
信号。
在 RC1 之前,这些 API 也有一些重载版本不专注于这种任务完成用例,这引入了一些混淆。从 RC1 开始,这些变体都已重命名(例如,Mono<Tuple2> and(Mono<V> other)
已重命名为 zipWith
)。
那些专注于任务完成并被保留的变体可以通过它们返回 Mono<Void>
来识别。它们现在适用于任何 Publisher
,而不仅仅是 Mono
when
静态方法一次性触发多个提供的任务并等待它们全部完成Mono
调用 and
方法时,它对单个提供的 Publisher
执行相同的操作then
方法的作用是忽略源的元素,仅传递其完成信号reactor-test
的源代码已移至与 reactor-core
相同的仓库,并且该 artifact 现在位于 Maven 的 io.projectreactor
groupId 下。(M2)Hooks
是累积的 (M3),并且可以使用 key 进行部分设置/重置 (RC1)WorkQueueProcessor
和 TopicProcessor
有许多构建选项,现在由 Builder
表示。(M2)Processor
实现已被大量重构,并且创建了一个 facade Sink
接口,以便于直接与处理器进行交互。使用 Processor#sink()
来获取并保留对该 facade 的引用。(M3)Flux
/Mono
可以用多个 tag
注解或一个 name
注解进行标记。(M3)subscriberContext(Context)
将 Context
绑定到响应式序列。此上下文会随订阅信号一起向上游传播。(RC1)接下来的两周将全力准备 GA 版本发布,除文档和一些新操作符外,我们预计不会有其他新的变化。
但这也是你尝试这些变化并提供反馈的最后机会!所以请尽快试用,并通过 GitHub 或 Gitter 聊天 向我们提供任何反馈。
愉快的响应式编程!