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 序列類型,現在涵蓋以下類別的廣泛操作

  • 冷轉熱或多播:publishpublishNextcachemulticast...
  • 聚合/簡化(轉換):bufferreducescanwindowsample...
  • 篩選:filterexistssingle...
  • 條件化:timeouttaketakeUntilskipskipUntil...
  • 組合:withLatestFromcombineLatest
  • 背壓:onBackpressureDroponBackpressureLatest...

雖然功能存在,但我們現在正在使用超高效的 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 Core 中的特點相同:專注於 API 和效率,無需額外的儀式或學術背景。

同時,我們正在加倍努力來創建各種入門體驗,期望一些部落格、指南以及與 Spring Boot 團隊的密切合作,讓您只需稍作努力即可觸手可及地獲得這種美好體驗。

取得 Spring 電子報

與 Spring 電子報保持聯繫

訂閱

搶先一步

VMware 提供培訓和認證,以加速您的進度。

了解更多

取得支援

Tanzu Spring 在一個簡單的訂閱中提供對 OpenJDK™、Spring 和 Apache Tomcat® 的支援和二進位檔。

了解更多

即將舉行的活動

查看 Spring 社群中所有即將舉行的活動。

檢視全部