Vertx 是一个高性能的 Java 框架,其借鉴了 Node.js 中的一些思想,基于 Netty 提供的异步 IO,提供了相对简单的编程接口,通过事件总线功能可以方便的实施组件分离的架构,并内置了集群功能,并支持采用多种语言进行开发。 本系列教程使用 Vertx 构建一个简单的API服务。 感受 Vertx 的基本功能。
环境准备
本文的例程基于如下软件:
- Java 1.8
- Vertx 3.9.0
- Intellij IDEA Community 2019
以上软件都是免费的。
新建项目
在 IDEA 中新建一个名为: vertx-todo-api 的简单 maven 项目,建好后打开项目中的 pom.xml 文件,添加相关依赖,在章节中我们需要:
- vertx-core - Vertx 的核心模块
- vertx-web - Vertx 的 Web 扩展模块,实际上 vertx-core 中已经提供了对网络功能(包括 HTTP)的支持,但 vertx-web 模块使开发更容易。
修改后的 pom.xml 文件如下:
1 |
|
添加 Verticle
对于 vertx 的应用,我们通常需要一个简单的 Java 类作为程序的入口。
在 src/main/java 中新建名为: cn.com.hohistar.study.vertx 的包,然后在包中新建名为: Main 的 Java 类。
然后再新建一个名为: cn.com.hohistar.study.vertx.verticle 的包,这个包用来存放例程中构建的 Verticle。 Verticle 是 vertx 中非常重要的一个概念,但现阶段你只需要理解它是 vertx 中的要给可部署单元。
在 verticle 包中新建名为 ApiVerticle 的类,通过这个类我们会部署一个 Web 服务。先看代码:
1 | public class ApiVerticle extends AbstractVerticle { |
在上面的代码中,自定义的 ApiVerticle 是继承于 AbstractVerticle 的, AbstractVerticle 是 Vertx 中预定义的一个类,其实现了 Verticle 基本的周期方法,start 方法就是当 Verticle 被部署到 Vertx 容器中时执行的方法。
在 start 方法中,使用了 vertx-web 中的 HttpServer 作为 Http 服务器。然后通过 Router 类定义了路由,也就是正对不同 URL 的处理逻辑。
然后通过 HttpServer 的 listen 启动 Http 服务,并在 8080 口进行监听。
启动 Verticle
现在在 Main 中添加代码,部署 ApiVerticle, 代码如下:
1 | public class Main { |
注意,在启动 HttpServer 监听和部署 ApiVerticle 时,使用的 api 都是采用传统的异步编程风格,也就是回调的方法,这是 vertx 编程中基本的风格
在方法调用中,因为时异步执行的,我们不能采用传统的返回值(return)的方式,而是通过在回调方法的参数的 succeeded 方法去判断调用是否成功。
完成上述代码后,就可以执行程序,并打开浏览器,访问本机的 8080, 就可以看到启动的结果了。
下一步
在下一篇文章中,将介绍如何如何输出 Json 格式的数据。