領先一步
VMware 提供訓練和認證,以加速您的進展。
了解更多謹代表 Reactor 團隊全體成員,我很高興宣布 Reactor BISMUTH-SR7
發布列車現已推出。如同以往,我們建議使用 reactor-bom
材料清單。
為了配合 Spring Boot 2,此發布列車帶來了核心、extras 和 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 佇列實作現在僅透過 Queues.unboundedMultiproducer()
作為純 Queue
公開。此具體類別現在為套件私有。
FluxDelaySequence
、FluxIndex
和 FluxIndexFuseable
現在也為套件私有。
錯誤修正還包括一些 GC 友善的修正,停止不必要地保留 elastic
Scheduler
工作執行緒和事件迴圈型處理器的背景任務,以防 forceShutdown()
。
自
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,以及更好的 Reactor Context
處理,方法是在相關時將 Netty 管道傳遞給它。
壓縮支援也獲得了改進,允許每個回應啟用壓縮。這稍微取代了已經存在的 minCompressionThreshold
功能(儘管它並非 100% 可靠)。它基於 BiPredicate<Req,Resp>
,例如,它可以僅在某些內容類型上啟用壓縮。最小壓縮閾值選項由 content-length
謂詞支援。
我們鼓勵您取得這些新的產出,但是,如果您是 Spring Boot 使用者,您會很高興得知,只要您升級到即將推出的 Spring Boot 2.0.0 GA 版本,您將獲得相同的優點。:)
如同以往,歡迎提供意見回饋。請在 Gitter 上討論此版本,或考慮在 GitHub 上開啟 issue。
同時,祝您反應式編碼愉快!