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 客户端。

有关更多详细信息,请参阅 问题跟踪器

接下来是什么?

通过此版本,我们拥有一个我们认为对库和应用程序开发人员都很有用的基础。我们准备收集更多反馈,而我们的下一站将是 Reactor IPC:Reactor Aeron 和 Reactor Netty。几个月来,这两个 Reactor IPC 模块一直有很棒的计划,可以帮助您跨越网络边界并考虑背压!这两个鼓舞人心的特性与 Reactor Core 中的一样:专注于 API 和效率,无需额外的仪式或学术背景。

同时,我们正在加倍努力创建各种入门体验,预计会有一些博客文章、指南以及与 Spring Boot 团队的密切合作,以便轻松地获得这些很棒的功能。

获取 Spring 时事通讯

与 Spring 时事通讯保持联系

订阅

领先一步

VMware 提供培训和认证,以加速您的进步。

了解更多

获得支持

Tanzu Spring 在一个简单的订阅中提供对 OpenJDK™、Spring 和 Apache Tomcat® 的支持和二进制文件。

了解更多

即将举行的活动

查看 Spring 社区中所有即将举行的活动。

查看全部