领先一步
VMware 提供培训和认证,以加速您的进步。
了解更多我代表 Reactor 团队荣幸地宣布 reactor-core 3.1.0.RC1
已发布 🎉。这是本月底发布 3.1 正式版(长期支持版本,将支持 Spring 5!)的最后一步。
它还包含其他各种版本,所有这些版本都与 Bismuth-M4
版本列车和 BOM 捆绑在一起。
reactor-test
、reactor-extra
、reactor-adapter
和 reactor-logback
都已发布 3.1.0.RC1
版本。reactor-netty
在新的 0.7.0.M2
里程碑版本中进行了重大更新和错误修复。reactor-kafka
已发布 1.0.0.M4
里程碑版本。要获取此版本,最佳方法是使用 BOM,如参考指南 此处 所述。请务必阅读关于 里程碑 的部分(将其转换为 *Bismuth-M4*)。
由于自里程碑 1 以来我们没有发布许多公告,让我们更深入地了解 `reactor-core` 3.1.0 中的主要更改,它变化最大。
我们将 API 更改的选项保留到 3.1.0.RELEASE,这使我们能够从我们的 社区 和 Spring Framework 团队收集宝贵的反馈。因此,我们能够改进 API,并最终得到我们认为完全适合与 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)这些更改通常具有额外的好处,即消除了使用 lambda 时关于应用哪个方法重载的任何歧义,尤其是在 Kotlin 等语言中。
Mono
有几个处理任务完成的 API。它们基本上忽略元素(如果有),只传播 `onComplete` 信号。
在 RC1 之前,这些 API 还会有一些重载,这些重载不会专注于此任务完成用例,从而造成一些混淆。从 RC1 开始,这些变体都已重命名(例如,`Mono<Tuple2> and(Mono<V> other)` 已重命名为 `zipWith`)。
保留的任务完成导向变体可以通过它们返回 `Mono<Void>` 来识别。它们现在可以与任何 `Publisher` 一起使用,而不仅仅是 Monos。
reactor-test
源代码已移动到与 reactor-core
相同的仓库中,并且工件现在位于 Maven 中的 `io.projectreactor` groupId 下。(M2)接下来的两周将完全致力于准备正式版发布,我们预计除了文档和一些新的操作符外不会有任何新的更改。
但这也是您尝试这些更改并提供反馈的**最后机会**!因此,请尽快尝试一下,并随时向我们提供您可能遇到的任何反馈(在 GitHub 上或通过 Gitter 聊天)。
祝您响应式编程愉快!