Reactor Core 3.0 成為基於 Java 8 的統一響應式基礎

釋出 | Stephane Maldini | 2016年3月11日 | ...

[更新] 在我們介紹了 Reactor 2.5 之後,我們將版本號轉移到 3.0,以便更好地反映所進行的重大重新設計工作。

富有意義的組合 API

原來的 reactor-stream 模組已合併到 Reactor Core 3.0 中。FluxMono 分別代表 0..N0..1 序列型別,現在涵蓋了以下類別的廣泛操作:

  • 冷到熱或多播:publish, publishNext, cache, multicast...
  • 聚合/歸約(轉換):buffer, reduce, scan, window, sample...
  • 過濾:filter, exists, single...
  • 條件化:timeout, take, takeUntil, skip, skipUntil...
  • 組合:withLatestFrom, combineLatest
  • 背壓:onBackpressureDrop, onBackpressureLatest...

儘管這些功能已經存在,但我們現在使用的是超高效的 Reactive Streams Commons 運算子實現。

專為 Java 8 及更高版本設計

所有 Reactor 3.0 專案都已升級到 Java 8。隨著 JVM 市場在 Java 8 上趨於標準化,我們認為沒有理由進一步推遲我們的過渡。下面列舉一些好處:

  • reactor.fn 中所有“回溯移植”的功能回撥都已替換為 java.util.function。因此,Reactor 提供了標準的互動契約和具有競爭力的表層 API。
  • Flux 轉換為 java.util.stream.Stream,反之亦然
  • Mono 轉換為 CompletableFuture,反之亦然
  • Optional 安全地建立 Mono
  • 使用 Duration 提供合理的時段支援
  • 刪除了對 ConcurrentHashMap 使用的影子 JSR 166 回溯移植,這尤其影響了 Reactor Addons
  • 向 Spring Framework 5 提供的程式設計體驗邁進了一大步,而 Spring Framework 5 本身也是基於 Java 8 構建的。

一些 Java 8 提取器和生成器的實際應用

java.util.stream.Stream<String> stream = 
    Mono.fromFuture(someCompletableFuture)
        .timeout(Duration.ofSeconds(30))
        .log("hello")
        .flatMap( pojo -> Flux.just(pojo.getId(), pojo.getName())
        .toStream();

Flux.fromStream(stream)
    .delayMillis(1000L)
    .subscribe(System.out::println);

我們以後可能會考慮為 Android 相容性進行回溯移植,但目前我們的重點是 Java 8 及更高版本的應用。

亮點

-- 借鑑 Reactive4Java, RxJavaReactor 多年經驗 -- 高效,真正高效,透過操作融合進一步提升效率 -- 來自 Reactive Streams Commons 的更多效能基準測試

  • 為帶佇列的運算子提供併發和預取引數
  • Mono 釋出-訂閱:MonoProcessor<T>
  • 更多測試:結合當前 Reactive Streams Commons (879) 和 Core (1153),以及我們的內部早期採用者,例如 Spring Framework 5 和 Cloud Foundry Java Client。

更多詳情請參閱 問題跟蹤器

下一步是什麼?

透過本次釋出,我們奠定了一個基礎,我們認為它對庫開發者和應用開發者都將非常有用。我們已準備好收集更多反饋,而我們的下一站將是 Reactor IPC:Reactor Aeron 和 Reactor Netty。這兩個 Reactor IPC 模組的宏偉計劃已經醞釀數月,旨在幫助您跨越網路邊界並考慮背壓!其兩個鼓舞人心的特質與 Reactor Core 相同:專注於 API 和效率,無需額外的儀式或學術背景。

同時,我們正在加倍努力創造各種入門體驗,期待更多的部落格、指南以及與 Spring Boot 團隊的緊密合作,以便讓您輕鬆地觸手可及這份卓越。

訂閱 Spring 新聞通訊

透過 Spring 新聞通訊保持聯絡

訂閱

先人一步

VMware 提供培訓和認證,助您加速進步。

瞭解更多

獲取支援

Tanzu Spring 透過一份簡單的訂閱,為 OpenJDK™、Spring 和 Apache Tomcat® 提供支援和二進位制檔案。

瞭解更多

即將舉行的活動

檢視 Spring 社群所有即將舉行的活動。

檢視全部