先行一步
VMware 提供培训和认证,助您快速前进。
了解更多代表整个 Reactor 团队,我很高兴地宣布 Reactor BISMUTH-SR7
发布版本现已可用。一如既往,我们建议使用 reactor-bom
物料清单 (Bill Of Material)。
及时配合 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()
以普通 Queue
的形式暴露。这个具体类现在是包私有的。
FluxDelaySequence
, FluxIndex
和 FluxIndexFuseable
现在也是包私有的。
错误修复还包括一些对 GC 友好的修复,在 forceShutdown()
的情况下停止不必要地保留 elastic
Scheduler
workers 和基于事件循环的 Processors 的后台任务。
自
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 pipelines 传递给 Context
来更好地处理 Reactor Context
。
压缩支持也得到了改进,允许按响应激活压缩。这略微取代了已经存在的 minCompressionThreshold
功能(尽管它不是 100% 可靠)。它基于一个 BiPredicate<Req,Resp>
,例如,可以仅对某些内容类型激活压缩。最小压缩阈值选项由一个 content-length
谓词支持。
我们鼓励您获取这些新的构件,但是,如果您是 Spring Boot 用户,您会很高兴地了解到,一旦您升级到即将发布的 Spring Boot 2.0.0 GA 版本,您将获得同样的改进。:)
一如既往,欢迎反馈。请到 Gitter 讨论此版本,或考虑在 GitHub 上提交 issue。
同时,祝您反应式编程愉快!