领先一步
VMware 提供培训和认证,助您加速进步。
了解更多我代表 Reactor 团队很高兴地宣布 reactor-core 3.1.0.RC1 已发布 ?. 这是 3.1 版本在月底前正式发布 (GA release) 的最后重要一步,也是将支持 Spring 5 的长期支持版本!
此外,还有一系列相关的版本发布,它们都整合在 Bismuth-M4 Release Train 和 BOM 中
reactor-test, reactor-extra, reactor-adapter 和 reactor-logback 都已更新至 3.1.0.RC1reactor-netty 在新的 0.7.0.M2 里程碑版本中有大量更新和错误修复reactor-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 的第一个 MILESTONE 起已逐步进行,您可以前往 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)*When 后缀来表示那些接受一个伴随 Publisher 或执行与其无后缀对应项相同异步任务的运算符。(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 静态方法同时启动几个提供的任务并等待它们全部完成and 在从 Mono 调用时执行相同操作,使用单个提供的 Publisherthen 旨在忽略源的元素,只发出其完成信号reactor-test 的源代码已迁移到与 reactor-core 相同的仓库,并且在 Maven 中,该构件现在属于 io.projectreactor 组。(M2)Hooks 现在是累积的(M3),并且可以使用密钥部分设置/重置(RC1)WorkQueueProcessor 和 TopicProcessor 具有许多构造选项,现在由 Builder 表示(M2)Processor 实现已进行了大量重构,并创建了一个 Sink 接口作为外观,以简化与处理器的直接交互。请使用 Processor#sink() 来获取并保留对此外观的引用。(M3)Flux/Mono 可以通过多个 tag 注释或一个 name 注释进行标记。(M3)Context 绑定到响应式序列,使用 subscriberContext(Context)。此上下文会沿着订阅信号向上游传播。(RC1)接下来的两周将专注于准备 GA 发布,我们预计除了文档和一些新运算符外,不会有任何新变更。
但这也是您尝试更改并提供反馈的**最后机会**!所以请尽快试用,并给我们任何反馈(在 GitHub 或 Gitter 聊天上)
祝您反应式编程愉快!