快速入门 Vert.x
在本快速入门指南中,你将学会如何从零搭建并运行一个基于 Vert.x Web 的微服务项目。
在开始之前,请确保你的开发环境满足以下基础要求:
- JDK 11 或更高版本
- 任意文本编辑器或集成开发环境(IDE)
- Maven 3 或更高版本
- curl、HTTPie 命令行工具或浏览器,用于发送 HTTP 测试请求
1创建项目脚手架
首先,访问在线脚手架站点 start.vertx.io。
在页面中选择你要使用的 Vert.x 版本,编程语言选择 Java,构建工具选择 Maven,并填入你期望的 Group ID 和 Artifact ID。 接着在 “Dependencies” 依赖搜索框中输入 Vert.x Web 并添加为项目依赖。 配置完成后,点击 Generate Project 按钮。 将生成的 zip 压缩包下载到本地并解压至任意工作目录。
生成的工程结构主要包含:
- 预先配置好的 Maven 构建描述文件
pom.xml,可直接用于编译和运行应用程序 - 一个示例 Verticle 源代码文件以及基于 JUnit 5 编写的基础测试用例
- 编辑器代码风格规范配置文件
- Git 版本控制忽略文件配置(
.gitignore)
如果你想立即动手体验,也可以直接下载打包好的示例工程:Maven 版本 或 Gradle 版本。
2编写业务代码
使用你喜欢的 IDE 打开工程,定位到 src/main/java/com/example/starter/MainVerticle.java 源文件。
该类实现了一个示例 Verticle(Vert.x 的标准部署与执行单元),其内部启动了一个基础 HTTP 服务器。
接下来我们将对其进行扩充,让它能够向每一个访问该服务的客户端返回问候信息。
将代码修改为如下内容:
package com.example.starter;
import io.vertx.core.Future;
import io.vertx.core.VerticleBase;
import io.vertx.core.MultiMap;
import io.vertx.core.json.JsonObject;
import io.vertx.ext.web.Router;
public class MainVerticle extends VerticleBase {
@Override
public Future<?> start() {
// 创建路由器
Router router = Router.router(vertx);
// 挂载处理器:拦截所有路径与 HTTP 请求方法的传入请求
router.route().handler(context -> {
// 获取当前请求的客户端远程连接地址
String address = context.request().connection().remoteAddress().toString();
// 获取 URL 查询参数 "name"
MultiMap queryParams = context.queryParams();
String name = queryParams.contains("name") ? queryParams.get("name") : "unknown";
// 构造并返回 JSON 响应
context.json(
new JsonObject()
.put("name", name)
.put("address", address)
.put("message", "Hello " + name + " connected from " + address)
);
});
// 创建 HTTP 服务器
return vertx.createHttpServer()
// 将所有 HTTP 请求交由路由器统一分发
.requestHandler(router)
// 绑定端口并启动监听
.listen(8888)
// 启动成功回调:打印实际监听端口
.onSuccess(server -> {
System.out.println("HTTP server started on port " + server.actualPort());
})
// 启动失败回调:打印异常堆栈信息
.onFailure(throwable -> {
throwable.printStackTrace();
});
}
}上述代码首先创建了一个 Vert.x Web Router(用于将传入的 HTTP 请求按路由规则分发给特定处理器的路由对象),并在 8888 端口启动了一个 HTTP 服务器。每次收到请求时,服务都会返回一个包含客户端 IP 地址、查询参数 name 以及打招呼语句的 JSON 数据对象。
3编译与运行
要启动应用程序,打开终端并切换到项目根目录。 首先使用 Maven 对工程进行打包编译:
$ mvn package打包成功后,直接运行该应用:
$ mvn exec:java
HTTP server started on port 8888
apr 03, 2020 11:49:21 AM io.vertx.core.impl.launcher.commands.VertxIsolatedDeployer
INFO: Succeeded in deploying verticle服务启动就绪后,打开新终端窗口发起测试请求:
$ http http://localhost:8888
HTTP/1.1 200 OK
content-length: 115
content-type: application/json; charset=utf-8
{
"address": "0:0:0:0:0:0:0:1:32806",
"message": "Hello unknown connected from 0:0:0:0:0:0:0:1:32806",
"name": "unknown"
}
$ http http://localhost:8888\?name\="Francesco"
HTTP/1.1 200 OK
content-length: 119
content-type: application/json; charset=utf-8
{
"address": "0:0:0:0:0:0:0:1:32822",
"message": "Hello Francesco connected from 0:0:0:0:0:0:0:1:32822",
"name": "Francesco"
}4探索更多进阶主题
体验了 Vert.x 的简洁与高效之后,你可以通过以下核心指引继续深入探索:
