Eclipse Vert.x 入门
用于 Eclipse Vert.x 4.3.7
摘要
第 1 章 开始的先决条件 复制链接链接已复制到粘贴板!
本指南涵盖了概念以及开发人员使用 Eclipse Vert.x 运行时所需要的实际详细信息。
作为应用开发人员,您可以使用 Eclipse Vert.x 创建以 Java 编写在 OpenShift 环境中的基于微服务的应用程序。
本指南介绍了如何创建、打包、运行和测试简单的 Eclipse Vert.x 项目。
前提条件
-
OpenJDK 8 或 OpenJDK 11 已安装,
JAVA_HOME环境变量指定 Java SDK 的位置。登录红帽客户门户,从 软件下载 下载红帽构建的 Open JDK。 - 已安装 Apache Maven 3.6.0 或更高版本。您可以从 Apache Maven Project 网站下载 Maven。
第 2 章 Eclipse Vert.x 概述 复制链接链接已复制到粘贴板!
Eclipse Vert.x 是用于创建被动、非阻塞和在 Java 虚拟机(JVM)上运行的异步应用程序的工具箱。
Eclipse Vert.x 旨在成为云原生。它允许应用程序使用非常少的线程。这可避免在创建新线程时导致的开销。这可让 Eclipse Vert.x 应用和服务有效使用其内存以及云环境中的 CPU 配额。
在 OpenShift 中使用 Eclipse Vert.x 运行时,可以更轻松地构建被动系统。OpenShift 平台的功能也可用,如滚动更新、服务发现和 canary 部署。借助 OpenShift,您可以在您的应用中实施外部化配置、健康检查、断路器和故障转移等微服务模式。
2.1. Eclipse Vert.x 的主要概念 复制链接链接已复制到粘贴板!
本节介绍了与 Eclipse Vert.x 运行时关联的一些关键概念。它还简要概述被动系统。
云和容器应用程序
云原生应用通常利用微服务构建。它们设计为形成分离组件的分布式系统。这些组件通常在包含大量节点的集群之上在容器内运行。这些应用程序预计会在不需要任何服务停机时间的情况下更新各个组件的故障。基于云原生应用的系统依赖于由底层云平台(如 OpenShift)提供的自动化部署、扩展和管理和维护任务。使用现成的管理和编排工具在集群级别上执行管理和配置任务,而不是在各个机器的水平执行。
被动系统
被动系统(Reactive manifesto 中定义)是一个分布式系统,它具有以下特征:
- Elastic
- 系统在不同的工作负载下保持响应,各个组件根据需要进行扩展和负载均衡,以适应工作负载的不同部分。弹性应用程序无论它们同时收到的请求数量如何,都可提供相同的服务质量。
- 弹性
- 即使有任何独立组件失败,系统也会保持响应。在系统中,组件相互隔离。这有助于在失败时快速恢复各个组件。单个组件故障不应影响其他组件的功能。这可防止级联失败,而隔离组件的失败导致其他组件被阻断,并逐渐失败。
- 响应
- 快速响应的系统设计为始终以合理的时间内响应请求,以确保提供一致的服务质量。为了保持响应响应,应用程序间的通信通道绝对不会被阻止。
- message-Driven
- 应用的各个组件使用异步消息传递来相互通信。如果事件发生(如鼠标点击或服务上的搜索查询),服务会发送通用频道的消息(即事件总线)。消息反过来由相应的组件发现并由相应的组件处理。
被动系统是分布式系统。它们设计为可将其异步属性用于应用程序开发。
被动编程
被动系统的概念描述了分布式系统的架构,但被动编程是指使应用程序在代码级别重新活跃的做法。被动编程是一种开发模型,用于编写异步和事件驱动的应用程序。在被动应用程序中,代码对事件或消息做出反应。
被动编程有多种实现。例如,使用回调进行简单的实施,使用 Reactive Extensions (Rx)和 coroutines 的复杂实现。
Reactive Extensions (Rx)是 Java 中最成熟的被动编程形式之一。它使用 RxJava 库。
第 3 章 使用 POM 文件创建 Eclipse Vert.x 项目 复制链接链接已复制到粘贴板!
当您开发基本的 Eclipse Vert.x 应用程序时,您应该创建以下工件。我们将在我们首先 启动的 Eclipse Vert.x 项目中创建这些工件。
- 包含 Eclipse Vert.x 方法的 Java 类。
-
包含 Maven 构建应用程序所需的信息的
pom.xml文件。
以下流程创建了一个简单的 Greeting 应用程序,它返回 Greetings! 作为响应。
Eclipse Vert.x 支持基于 OpenJDK 8 和 OpenJDK 11 的构建器镜像,用于构建和部署应用程序到 OpenShift。不支持 Oracle JDK 和 OpenJDK 9 构建器镜像。
前提条件
- 安装了 OpenJDK 8 或 OpenJDK 11。
- 已安装 Maven。
流程
创建新目录
getting-started并浏览到其中。mkdir getting-started cd getting-started
$ mkdir getting-started $ cd getting-startedCopy to Clipboard Copied! Toggle word wrap Toggle overflow 这是应用的根目录。
在根目录中创建目录结构
src/main/java/com/example/,然后导航到.mkdir -p src/main/java/com/example/ cd src/main/java/com/example/
$ mkdir -p src/main/java/com/example/ $ cd src/main/java/com/example/Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建包含应用代码的 Java 类文件
MyApp.java。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 该应用在端口 8080 上启动 HTTP 服务器。向您发送不动时,它又会得到 回报! 我很好。
在应用程序根目录中创建一个
pom.xml文件,其内容如下:-
在 &
lt;dependencyManagement> 部分中,添加io.vertx:vertx-dependencies构件。 -
将
类型指定为pom,范围指定为导入。 在 &
lt;project> 部分的<properties> 下,指定 Eclipse Vert.x 和 Eclipse Vert.x Maven 插件的版本。注意属性可用于设置在每个版本中更改的值。例如,产品或插件的版本。
-
在 <
;project> 部分中,在 <plugin> 下,指定vertx-maven-plugin。Eclipse Vert.x Maven 插件用于打包您的应用程序。 包含
包含要构建应用程序的工件和插件的存储库。软件仓库和插件,以指定pom.xml包含以下工件:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
在 &
从应用的根目录使用 Maven 构建应用。
mvn vertx:run
mvn vertx:runCopy to Clipboard Copied! Toggle word wrap Toggle overflow 验证应用是否正在运行。
使用
curl或浏览器验证您的应用程序是否在http://localhost:8080中运行,并返回 "Greetings!" 作为回答。curl http://localhost:8080 Greetings!
$ curl http://localhost:8080 Greetings!Copy to Clipboard Copied! Toggle word wrap Toggle overflow
第 4 章 使用 JUnit 测试 Eclipse Vert.x 应用程序 复制链接链接已复制到粘贴板!
在 getting-started 项目中构建了 Eclipse Vert.x 应用后,使用 JUnit 5 框架测试您的应用程序以确保它按预期运行。Eclipse Vert.x pom.xml 文件中的以下两个依赖项用于 JUnit 5 测试:
-
测试需要
vertx-junit5依赖项。JUnit 5 提供了各种注释,如@Test、@Before 每个、@DisplayName等等,它们可用于请求对Vertx和VertxTestContext实例进行异步注入。 -
运行时执行测试需要
junit-jupiter-engine依赖项。
前提条件
-
您已使用
pom.xml文件构建了 Eclipse Vert.xgetting-started项目。
流程
打开生成的
pom.xml文件并设置 Surefire Maven 插件的版本:<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>3.0.0-M5</version> </plugin><plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>3.0.0-M5</version> </plugin>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在根目录中创建目录结构
src/test/java/com/example/,然后导航到.mkdir -p src/test/java/com/example/ cd src/test/java/com/example/
$ mkdir -p src/test/java/com/example/ $ cd src/test/java/com/example/Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建包含应用代码的 Java 类文件
MyTestApp.java。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用 Maven 在我的应用上运行 JUnit 测试,可从应用的根目录运行以下命令:
mvn clean verify
mvn clean verifyCopy to Clipboard Copied! Toggle word wrap Toggle overflow 您可以检查
目标/surefire-reports的测试结果。com.example.MyAppTest.txt文件包含测试结果。
第 5 章 创建 Eclipse Vert.x 项目的其它方法 复制链接链接已复制到粘贴板!
本节显示了创建 Eclipse Vert.x 项目的不同方法。
5.1. 在命令行中创建 Eclipse Vert.x 项目 复制链接链接已复制到粘贴板!
您可以在命令行中使用 Eclipse Vert.x Maven 插件来创建 Eclipse Vert.x 项目。您可以在命令行中指定属性和值。
前提条件
- 安装了 OpenJDK 8 或 OpenJDK 11。
- 已安装 Maven 3 或更高版本。
- 提供文本 ior 或 IDE。
- 提供 curl 或 HTTPie 或浏览器以保证 HTTP 可重复使用。
流程
在命令终端中,输入以下命令验证 Maven 是否使用 OpenJDK 8 或 OpenJDK 11,并且 Maven 版本为 3.6.0 或更高版本:
mvn --version
mvn --versionCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 如果前面的命令没有返回 OpenJDK 8 或 OpenJDK 11,请将到 OpenJDK 8 或 OpenJDK 11 的路径添加到 PATH 环境变量中,然后再次输入该命令。
创建目录并前往目录位置。
mkdir getting-started && cd getting-started
mkdir getting-started && cd getting-startedCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用以下命令,使用 Eclipse Vert.x Maven 插件创建新项目。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下示例演示了如何使用 命令创建 Eclipse Vert.x 应用。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 下表列出了您可以使用
setup命令定义的属性:Expand 属性 默认值 Description vertx_versionEclipse Vert.x 的版本。
要在项目中使用的 Eclipse Vert.x 版本。
project_group_idio.vertx.example项目的唯一标识符。
project_artifact_idmy-vertx-project项目和项目目录的名称。如果没有指定
project_artifact_id,则 Maven 插件会启动交互模式。如果 目录已存在,生成会失败。project-version1.0-SNAPSHOT项目的版本。
verticle_classio.vertx.example.MainVerticle由 verticle 参数创建的新 verticle 类文件。
dependency_names可选参数
要添加到项目中以逗号分开的依赖关系列表。您还可以使用以下语法来配置依赖项:
groupId:artifactId:version:classifier例如:
- 从 BOM 继承版本,使用以下语法:
io.vertx:vertxcodetrans- 指定依赖项使用以下语法:
commons-io:commons-io:2.5- 使用类符指定依赖项,使用以下语法:
io.vertx:vertx-template-engines:3.4.1:shaded该命令会创建一个空 Eclipse Vert.x 项目,其中包含
getting-started目录中的以下工件:-
Maven build desiptor
pom.xmlconured to build and run aplication -
src/main/java文件夹中的示例
-
Maven build desiptor
在
pom.xml文件中,指定包含 Eclipse Vert.x 工件的存储库以构建应用程序。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 或者,您也可以配置 Maven 存储库,以在
settings.xml文件中指定构建工件。如需更多信息,请参阅为 Eclipse Vert.x 项目配置 Apache Maven 存储库。- 使用 Eclipse Vert.x 项目作为模板来创建自己的应用程序。
从应用的根目录使用 Maven 构建应用。
mvn package
mvn packageCopy to Clipboard Copied! Toggle word wrap Toggle overflow 从应用的根目录使用 Maven 运行应用。
mvn vertx:run
mvn vertx:runCopy to Clipboard Copied! Toggle word wrap Toggle overflow
5.2. 使用 community Vert.x starter 创建 Eclipse Vert.x 项目 复制链接链接已复制到粘贴板!
您可以使用 community Vert.x starter 创建 Eclipse Vert.x 项目。初学者会创建一个社区项目。您必须将社区项目转换为红帽构建的 Eclipse Vert.x 项目。
前提条件
- 安装了 OpenJDK 8 或 OpenJDK 11。
- 已安装 Maven 3 或更高版本。
- 提供文本 ior 或 IDE。
- 提供 curl 或 HTTPie 或浏览器以保证 HTTP 可重复使用。
流程
在命令终端中,输入以下命令验证 Maven 是否使用 OpenJDK 8 或 OpenJDK 11,并且 Maven 版本为 3.6.0 或更高版本:
mvn --version
mvn --versionCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 如果前面的命令没有返回 OpenJDK 8 或 OpenJDK 11,请将到 OpenJDK 8 或 OpenJDK 11 的路径添加到 PATH 环境变量中,然后再次输入该命令。
- 进入 Vert.x Starter。
- 选择 Eclipse Vert.x 的 Version。
- 选择 Java 作为语言。
- 选择 Maven 作为构建工具。
- 输入 组 Id,它是项目的唯一标识符。对于此过程,请保留默认的 com.example。
- 输入 Artifact Id,这是您的项目和项目目录的名称。对于此过程,请保留默认的 starter。
- 指定您要添加到项目中的依赖项。对于此过程,在 Depencies 文本框中键入 Vert.x Web 未指定值,也可以从 Depencies 列表中选择它。
- 点 Advanced options 选择 OpenJDK 版本。对于此过程,请保留默认的 JDK 11。
-
单击 Generate 项目。下载包含 Eclipse Vert.x 项目的构件的
starter.zip文件。 -
创建
已启动的目录。 将 ZIP 文件的内容提取到
getting-started文件夹。Vert.x Starter 创建一个具有以下工件的 Eclipse Vert.x 项目:-
Maven 构建削减
pom.xml文件.该文件有配置来构建和运行您的责任。 -
src/main/java文件夹中的示例. -
Sample 测试使用
src/test/java文件夹中的 JUnit 5。 - ifigution to enforce Code风格.
- git configtion to ignore 文件.
-
Maven 构建削减
要将社区项目转换为红帽构建的 Eclipse Vert.x 项目,请在
pom.xml文件中替换以下值:-
vertx.version- 指定您要使用的 Eclipse Vert.x 版本。例如,如果您想要使用 Eclipse Vert.x 4.3.7 版本,请将版本指定为 4.3.7.redhat-00002。 -
vertx-stack-depchain- 将这个依赖项替换为vertx-dependencies。
-
指定要在
pom.xml文件中构建应用程序的 Eclipse Vert.x 工件的软件仓库。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 或者,您也可以配置 Maven 存储库,以在
settings.xml文件中指定构建工件。如需更多信息,请参阅为 Eclipse Vert.x 项目配置 Apache Maven 存储库。- 使用 Eclipse Vert.x 项目作为模板来创建自己的应用程序。
从应用的根目录使用 Maven 构建应用。
mvn package
mvn packageCopy to Clipboard Copied! Toggle word wrap Toggle overflow 从应用的根目录使用 Maven 运行应用。
mvn exec:java
mvn exec:javaCopy to Clipboard Copied! Toggle word wrap Toggle overflow 验证应用是否正在运行。
使用
curl或您的浏览器,验证您的应用是否在运行http://localhost:8888,并返回 "Hello from Vert.x!" 作为回答。curl http://localhost:8888 Hello from Vert.x!
$ curl http://localhost:8888 Hello from Vert.x!Copy to Clipboard Copied! Toggle word wrap Toggle overflow
第 6 章 为 Eclipse Vert.x 项目配置 Apache Maven 存储库 复制链接链接已复制到粘贴板!
Apache Maven 是 Java 应用程序开发中使用的分布式构建自动化工具,用于创建、管理和构建软件项目。Maven 使用名为 Project Object Model(POM)文件的标准配置文件来定义项目并管理构建流程。POM 文件描述了使用 XML 文件生成项目打包和输出的模块和组件依赖项、构建顺序和目标。这可确保以正确、一致的方式构建项目。
Maven 插件
Maven 插件是 POM 文件定义的部分,可实现一个或多个目标。Eclipse Vert.x 应用程序使用以下 Maven 插件:
-
Eclipse Vert.x Maven 插件(
vertx-maven-plugin):启用 Maven 来创建 Eclipse Vert.x 项目,支持生成 uber-JAR 文件,并提供开发模式。 -
Maven Surefire 插件(
maven-surefire-plugin):在构建生命周期测试期间使用,用于在应用程序上执行单元测试。该插件生成包含测试报告的文本和 XML 文件。
Maven 存储库
Maven 存储库存储 Java 库、插件和其他构建构件。默认公共存储库是 Maven 2 Central Repository,但存储库可以是私有和内部存储库,可在开发团队之间共享通用构件。也可从第三方获取存储库。
在 Eclipse Vert.x 项目中,您可以使用:
- 在线 Maven 软件仓库
- 下载 Eclipse Vert.x Maven 存储库
6.1. 为在线存储库配置 Maven settings.xml 文件 复制链接链接已复制到粘贴板!
您可以通过配置用户 settings.xml 文件,将在线 Eclipse Vert.x 存储库与 Eclipse Vert.x Maven 项目搭配使用。这是推荐的方法。与共享服务器上的存储库管理器或存储库一起使用的 Maven 设置可以更好地控制项目和管理。
当您通过修改 Maven settings.xml 文件配置存储库时,更改将应用到所有 Maven 项目。
流程
在文本编辑器中打开 Maven
~/.m2/settings.xml文件,或者集成开发环境(IDE)。注意如果
~/.m2/目录中没有settings.xml文件,请将$MAVEN_HOME/.m2/conf/目录中的settings.xml文件复制到~/.m2/conf/ 目录中。在
settings.xml文件的<profiles> 元素中添加以下行:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在
settings.xml文件的<activeProfiles> 元素中添加以下行并保存该文件。<activeProfile>red-hat-enterprise-maven-repository</activeProfile>
<activeProfile>red-hat-enterprise-maven-repository</activeProfile>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.2. 下载并配置 Eclipse Vert.x Maven 存储库 复制链接链接已复制到粘贴板!
如果您不想使用在线 Maven 存储库,您可以下载并配置 Eclipse Vert.x Maven 存储库,以使用 Maven 创建 Eclipse Vert.x 应用程序。Eclipse Vert.x Maven 存储库包含 Java 开发人员用来构建应用程序的许多要求。这个步骤描述了如何编辑 settings.xml 文件来配置 Eclipse Vert.x Maven 存储库。
当您通过修改 Maven settings.xml 文件配置存储库时,更改将应用到所有 Maven 项目。
流程
- 从红帽客户门户网站的 软件下载 页面下载 Eclipse Vert.x Maven 存储库 ZIP 文件。要下载软件,您必须登录门户。
- 展开下载的存档。
-
将目录更改为
~/.m2/目录,并在文本编辑器或集成开发环境(IDE)中打开 Mavensettings.xml文件。 将以下行添加到
settings.xml文件的 <profiles> 元素,其中MAVEN_REPOSITORY是您下载的 Eclipse Vert.x Maven 存储库的路径。MAVEN_REPOSITORY的格式必须是file://$PATH,例如file:///home/userX/rhb-vertx-4.1.5.SP1-maven-repository/maven-repository。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在
settings.xml文件的<activeProfiles> 元素中添加以下行并保存该文件。<activeProfile>red-hat-enterprise-maven-repository</activeProfile>
<activeProfile>red-hat-enterprise-maven-repository</activeProfile>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
如果您的 Maven 存储库包含过时的工件,您可能会在构建或部署项目时得到以下 Maven 错误消息之一,其中 ARTIFACT_NAME 是缺少工件的名称,PROJECT_NAME 是您要构建的项目的名称:
-
缺少工件 PROJECT_NAME -
[ERROR] 在项目 ARTIFACT_NAME 上执行目标失败;Could 不会解析 PROJECT_NAME的依赖项
要解决这个问题,请删除 ~/.m2/repository 目录中的本地存储库的缓存版本,以强制下载最新的 Maven 工件。
第 7 章 其他资源 复制链接链接已复制到粘贴板!
- 有关 Maven Surefire 插件的更多信息,请参阅 Apache Maven Project 网站。
- 有关 JUnit 5 测试框架的信息,请参见 JUnit 5 网站。