Vertx底层通信框架依赖于Netty,并封装了对Http协议的支持,因此可以非常方便的进行Web开发,且不依赖于任何中间件。
下面简单实现一个HttpServer
1、引入依赖
<dependency>
<groupId>io.vertx</groupId>
<artifactId>vertx-core</artifactId>
<version>3.5.2</version>
</dependency>
2、创建核心代码
public class MyHttpServer {
public static void main(String[] args) {
Vertx vertx = Vertx.vertx();
HttpServer server = vertx.createHttpServer();
server.requestHandler(request -> {
HttpServerResponse response = request.response();
//设置响应头
response.putHeader("Content-type","text/html;charset=utf-8");
// 响应数据
response.end("Hello World");
});
// 监听8888 端口
server.listen(8888);
}
}
3、访问http://localhost:8888/

4、代码改进
上面的代码有个很大的问题,所有的代码都写在Main方法中。Vert.x推荐的写法是为每一个应用创建一个Verticle,也就是Vert.x的模块,然后通过Vertx核心接口,部署Verticle模块。多个Verticle模块之间可以通过EventBus进行相互调用。
下面我们创建一个HttpServer的Verticle模块,不部署到Vertx中,实现步骤如下:
1、创建一个类,集成AbstractVerticle类
2、重写start方法和stop方法,在start方法中处理业务逻辑,stop方法中释放资源。
3、在main方法中部署Verticle模块
4、启动服务,并通过浏览器进行访问。
代码如下:
public class MyHttpServer2 extends AbstractVerticle {
public static void main(String[] args) {
MyHttpServer2 verticle = new MyHttpServer2();
Vertx vertx = Vertx.vertx();
//部署verticle,这里会调用start方法
vertx.deployVerticle(verticle);
}
@Override
public void start() throws Exception {
// 在这里可以通过this.vertx获取到当前的Vertx
Vertx vertx = this.vertx;
HttpServer server = vertx.createHttpServer();
server.requestHandler(request -> {
HttpServerResponse response = request.response();
//设置响应头
response.putHeader("Content-type","text/html;charset=utf-8");
// 响应数据
response.end("Hello World");
});
// 监听8888 端口
server.listen(8889);
}
@Override
public void stop() throws Exception {
super.stop();
}
}
参考:https://blog.csdn.net/king_kgh/article/details/80804078
作者:Work Hard Work Smart
出处:http://www.cnblogs.com/linlf03/
欢迎任何形式的转载,未经作者同意,请保留此段声明!
浙公网安备 33010602011771号