领先一步
VMware 提供培训和认证,助您加速进步。
了解更多我谨代表整个 Reactor 团队,很高兴宣布 Reactor BISMUTH-SR7 发布列车现已可用。一如既往,我们建议使用 reactor-bom 材料清单。
及时为 Spring Boot 2,此发布列车带来了对核心、附加功能和 reactor-netty 的改进和错误修复。
这篇博文重点介绍了 SR7 和上周 SR6 发布列车中最显著的更改。
自
3.1.3以来的新功能?请参阅3.1.4.RELEASE和3.1.5.RELEASE的完整发布说明。核心更改包括超过 15 项改进和错误修复。
此版本中引入了一些新的操作符:例如,mergeOrdered 已添加到 Flux 和 ParallelFlux 中。它允许您通过一个提供的 Comparator,持续选择所有源中最小的可用值来合并多个源。
为了方便起见,我们还添加了 Flux#concatWithValues(T…) 和 Mono#thenReturn(T),允许轻松地与标量值进行串联/续接。
为了启动我们 2018 年的内省主题,我们的 Scheduler 实现是 Scannable 的,因此在与 Scannable#from 一起使用时是有意义的。
值得注意的更新考虑包括修复了 Mono.zip 的行为,使其与 Flux.zip 的行为保持一致:现在,只要有一个源以空完成或抛出错误,它就会取消正在进行的源。如果您 zip 在一起的所有 Mono 源都保证有值,这不会改变任何东西。
提示
如果您不关心结果,但想确保所有 N 个源都已完成,请优先使用 Mono.when。特别是,请注意 .zip(…).then() 模式,它应该替换为 .when(…)。
另一个不太可能被我们的用户注意到的更改是修复了几个从未打算公开的类的可见性
3.1.3.RELEASE 中的 MPSC 队列实现现在只作为普通 Queue 通过 Queues.unboundedMultiproducer() 公开。这个具体类现在是包私有的。
FluxDelaySequence、FluxIndex 和 FluxIndexFuseable 现在也是包私有的。
错误修复还包括一些对 GC 友好的修复,在 forceShutdown() 的情况下,停止不必要地保留 elastic Scheduler 工作线程和基于事件循环的 Processor 的后台任务。
自
3.1.4以来有什么新变化?请参阅3.1.5.RELEASE和3.1.6.RELEASE的完整发布说明。
Addons 已经进行了一些修复和改进。
新引入的用于缓存的“有主见”的助手在发布时包含了一些应该是 public 的包私有接口。这很令人尴尬。:( 现在已经修复了。
引入了一个新的 Repeat#create 工厂方法变体。它允许结合 Predicate 和最大重复尝试次数。
注意
说到 Repeat 和它的姊妹 Retry,一些用户注意到默认行为与核心的简化版 repeat() 和 retry() 变体感觉有点不一致:在没有进一步配置的情况下,这些助手被限制为单次尝试,而核心版本则会继续重复或重试。此外,通过链式调用 timeout 可以改变这种行为,它会切换到不受限制的尝试行为(这已在其 javadoc 中澄清)。
我们正在考虑在 3.2.0 中将此行为与核心对齐。如果您有任何见解或反馈,请在 issue 中发表意见。
自
0.7.3以来有什么新变化?请参阅0.7.4.RELEASE和0.7.5.RELEASE的完整发布说明。
Reactor-Netty 也进行了一些修复,主要围绕连接池和连接生命周期。
新功能包括支持 expect 100-continue,以及通过在相关时将 Netty 管道传递给 Reactor Context,从而更好地处理 Reactor Context。
压缩支持也得到了改进,允许按响应激活压缩。这稍微取代了已有的 minCompressionThreshold 功能(尽管它不是 100% 可靠)。它基于一个 BiPredicate<Req,Resp>,例如,只在某些内容类型上激活压缩。最小压缩阈值选项由一个 content-length 谓词支持。
我们鼓励您获取这些新的构件,但是,如果您是 Spring Boot 用户,您会很高兴地得知,只要您升级到即将发布的 Spring Boot 2.0.0 GA 版本,您将获得同样的福利。:)
一如既往,欢迎反馈。请到 Gitter 讨论此版本,或考虑在 GitHub 上提出问题。
与此同时,祝您反应式编程愉快!