領先一步
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 上提出問題。
與此同時,祝您反應式程式設計愉快!