先人一步
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 聊天 向我们提供任何反馈。
愉快的响应式编程!