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 應用程式及更高版本。

亮點

-- 建立在多年的經驗之上,來自 Reactive4JavaRxJavaReactor -- 高效,非常高效,透過操作融合進一步提高效率 -- 來自 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 社群所有即將舉行的活動。

檢視所有