跳到主要内容

快速上手

Doubao 中英对照 Getting Started

目录

本节包含帮助您开始使用 Reactor Netty 的相关信息,内容如下:

1. 介绍 Reactor Netty​

Reactor Netty 面向微服务架构,提供具备背压能力的网络引擎,支持 HTTP(含 Websocket)、TCP 和 UDP。

2. 前提条件​

Reactor Netty 运行于 Java 8 及以上版本。

它具有以下传递依赖:

  • Reactive Streams v1.0.4

  • Reactor Core v3.x

  • Netty v4.2.x

3. 理解 BOM 与版本方案​

Reactor Netty 是 Project Reactor BOM 的一部分(自 Aluminium 发布列车起)。这份精心整理的清单将彼此协同良好的制品归组在一起,尽管这些制品各自的版本方案可能不同,清单仍会提供对应的版本。

备注

版本方案在 0.9.x 与 1.0.x(Dysprosium 与 Europium)之间发生了变化。

制品采用 MAJOR.MINOR.PATCH-QUALIFIER 的版本方案,而 BOM 则采用受 CalVer 启发的 YYYY.MINOR.PATCH-QUALIFIER 方案进行版本编号,其中:

  • MAJOR 是 Reactor 的当前世代,每个新世代都可能为项目结构带来根本性变更(这可能意味着需要较大的迁移工作量)

  • YYYY 是某一发布周期中首个 GA 发布的年份(如 1.0.x 对应 1.0.0)

  • .MINOR 是从 0 开始编号、随每个新发布周期递增的数字

    • 对于项目而言,它通常反映更广泛的变更,并可能意味着中等程度的迁移工作量

    • 对于 BOM 而言,当两个发布周期在同一年首次发布时,它可用于区分二者

  • .PATCH 是从 0 开始编号、随每次服务发布递增的数字

  • -QUALIFIER 是一个文本限定符,在 GA 发布时省略(见下文)

因此,遵循该约定的第一个发布周期是 2020.0.x,代号为 Europium。该方案按以下顺序使用限定符(注意使用短横线分隔符):

  • -M1..-M9:里程碑(我们预计每个服务发布不超过 9 个)

  • -RC1..-RC9:发布候选版本(我们预计不超过 9 个)

  • -SNAPSHOT:快照

  • GA 发布不使用限定符

备注

在上述顺序中快照排在更靠前的位置,因为从概念上讲,它们始终是任一 PATCH 的“最新预发布版本”。尽管某个 PATCH 周期首次部署的制品总是一个 -SNAPSHOT,但一个同名但更新的快照也会在(例如)某个里程碑之后或发布候选版本之间发布。

每个发布周期还会被赋予一个代号,以延续此前基于代号的方案,可用于更非正式地指代它(例如在讨论、博客文章等中)。这些代号代表传统上的 MAJOR.MINOR 编号。它们(大多)来自元素周期表,按字母顺序递增排列。

备注

在 Dysprosium 之前,BOM 采用发布列车方案进行版本编号:一个代号后跟一个限定符,且限定符略有不同。例如:Aluminium-RELEASE(首个 GA 发布,如今相当于 YYYY.0.0)、Bismuth-M1、Californium-SR1(服务发布如今相当于 YYYY.0.1)、Dysprosium-RC1、Dysprosium-BUILD-SNAPSHOT(每次补丁后我们都会回到同一个快照版本,如今相当于 YYYY.0.X-SNAPSHOT,因此每个 PATCH 对应 1 个快照)。

4. 获取 Reactor Netty​

如前所述,在您的核心中使用 Reactor Netty 的最简单方式是使用 BOM 并将相关依赖添加到您的项目中。请注意,添加此类依赖时必须省略版本号,以便版本从 BOM 中获取。

不过,如果您想强制使用某个特定制品的版本,可以像往常一样在添加依赖时指定它。您也可以完全不用 BOM,直接按制品版本来指定依赖。

4.1. Maven 安装​

Maven 原生支持 BOM 概念。首先,您需要通过将以下片段添加到 pom.xml 来导入 BOM。如果您的 pom 中已存在顶层部分(dependencyManagement),则只需添加其内容。

<dependencyManagement> // <1>
<dependencies>
<dependency>
<groupId>io.projectreactor</groupId>
<artifactId>reactor-bom</artifactId>
<version>2025.0.0-RC1</version> // <2>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
  • 注意 dependencyManagement 标签。它是对常规 dependencies 部分的补充。

  • 在撰写本文时,2025.0.0-RC1 是 BOM 的最新版本。请在 github.com/reactor/reactor/releases 检查更新。

接下来,像往常一样将依赖添加到相关的 reactor 项目中(只是不指定 <version>)。以下清单展示了如何操作:

<dependencies>
<dependency>
<groupId>io.projectreactor.netty</groupId>
<artifactId>reactor-netty-core</artifactId> // <1>
// <2>
</dependency>
</dependencies>
<dependencies>
<dependency>
<groupId>io.projectreactor.netty</groupId>
<artifactId>reactor-netty-http</artifactId>
</dependency>
</dependencies>
  • 对 Reactor Netty 的依赖

  • 此处没有 version 标签

4.2. Gradle 安装​

Gradle 自 5 版本起支持 BOM 概念。以下清单展示了如何导入 BOM 并为 Reactor Netty 添加依赖:

dependencies {
// import a BOM
implementation platform('io.projectreactor:reactor-bom:2025.0.0-RC1') 1

// define dependencies without versions
implementation 'io.projectreactor.netty:reactor-netty-core' 2
implementation 'io.projectreactor.netty:reactor-netty-http'
}
  • 在撰写本文时,2025.0.0-RC1 是 BOM 的最新版本。请在 github.com/reactor/reactor/releases 检查更新。

  • 没有第三个以 : 分隔的版本部分。版本取自 BOM。

4.3. 里程碑与快照​

里程碑版本和发布候选版本通过 Maven Central 分发。

备注

里程碑版本和发布候选版本仅用于测试目的,不适合在生产环境中使用。

快照通过 Spring Snapshots 仓库而非 Maven Central 分发。要将其添加到您的构建配置文件中,请使用以下片段(Maven 和 Gradle 均适用):

<repositories>
<repository>
<id>spring-snapshots</id>
<name>Spring Snapshot Repository</name>
<url>https://repo.spring.io/snapshot</url>
</repository>
</repositories>
repositories {
maven { url 'https://repo.spring.io/snapshot' }
mavenCentral()
}

5. 支持与策略​

5.1. 您有疑问吗?​

提示

先在 Stack Overflow 上搜索;必要时再发起讨论

如果您不确定某处为何不能正常工作,或想知道是否有更好的做法,请先在 Stack Overflow 上搜索,并在必要时发起讨论。请使用我们为此目的监控的相关标签之一:

如果您更喜欢实时讨论,我们还设有几个 Gitter 频道:

  • reactor 是历史上最活跃的频道,社区中大多数人都能在此提供帮助

  • reactor-core 用于围绕库内部工作机制开展更深入、更聚焦的讨论

  • reactor-netty 用于 netty 相关的特定问题

有关其他可能的信息来源,请参阅各项目的 README。

我们通常不建议通过 GitHub issues 提出问题,而是建议使用上述两个频道。

5.2. 我们对弃用的策略​

在处理弃用时,给定一个版本 A.B.C,我们将确保:

  • 在版本 A.B.0 中引入的弃用,将在不早于版本 A.B+1.0 时移除

  • 在版本 A.B.1+ 中引入的弃用,将在不早于版本 A.B+2.0 时移除

  • 我们将力求在弃用的 javadoc 中说明以下内容:

    • 移除的目标最低版本

    • 指向被弃用方法替代方案的指引

    • 方法被弃用所在的版本

提示

该策略自 2021 年 1 月起正式生效,适用于 2020.0 BOM 及更新发布列车中的所有模块,以及 Dysprosium-SR15 之后的 Dysprosium 发布。

备注

弃用移除目标并非硬性承诺,被弃用的方法可能存活得比这些目标最低 GA 版本更久(即只有最成问题的被弃用方法才会被积极移除)。

注意

也就是说,超过其最低移除目标版本的被弃用代码,可能在任何后续发布(包括补丁发布,即服务发布)中被移除,恕不另行通知。因此用户仍应尽量尽早更新其代码。

5.3. 支持时间线​

有关各单独项目和 BOM 支持日期的汇总,请参阅 Reactor Support 页面。