1、什么是vertx
vert.x是Eclipse软件基金会顶级java开源项目之一,它基于netty的、运行在jvm之上的、支持多种编程语言的异步、非阻塞、响应式编程的工具集。
vert.x支持java,Kotlin,JavaScript, Groovy,Ruby,Scala
2、Vert.x拥有目前最完整的异步生态系统
Vert.x可以开发Web应用,但Vert.x不仅仅是一个Web开发框架,他更像Spring全家桶,是一个技术栈),或者说是一个Vert.x生态体系。在这个体系中,Vert.x提供了一些列配套的异步组件。下面对Vertx生态和Spring生态做一个对比:
项目 | Spring | Vertx |
---|---|---|
核心框架 | spring-core | vertx-core |
Web开发 | spring-webmvc | vertx-web |
jdbc框架 | spring-jdbc | vertx-jdbc-client |
redis | spring-data-redis | vertx-redis-client |
微服务 | spring-cloud | vertx-hazelcast |
可以说,很多的spring能做的事情,Vertx也都能实现。在性能上vertx系列也是甩spring几百条街
那么既然如此,Vertx用户群如此小众? 被spring甩几百条街呢?
Vertx的操作是异步的。异步带来了更高的性能,但同时也带来了编码和调试的复杂度,对于追求效率工作的同学来说并不是一件轻松的事
毕竟早点下班比高并发重要...............
Vert.x 入门Hello Wolrd
1.pom文件
<dependency>
<groupId>io.vertx</groupId>
<artifactId>vertx-web</artifactId>
<version>4.0.2</version>
</dependency>
2、创建verticle
import io.vertx.core.AbstractVerticle;
import io.vertx.core.http.HttpServer;
import io.vertx.ext.web.Router;
public class HttpServerVerticle extends AbstractVerticle {
@Override
public void start() throws Exception {
// 创建HttpServer
HttpServer server = vertx.createHttpServer();
// 创建路由对象
Router router = Router.router(vertx);
//响应请求
router.route("/").handler(event -> event.end("hello world"));
// 把请求交给路由处理
server.requestHandler(router);
//监听端口
server.listen(9999).onComplete(event -> {
if(event.succeeded()){
System.out.println("服务器启动成功 端口:" + event.result().actualPort());
}else{
event.cause().printStackTrace();
}
});
}
}
3、启动
public class Main {
public static void main(String[] args) {
Vertx vertx = Vertx.vertx();
vertx.deployVerticle(new HttpServerVerticle());
}
疑问环节
1、vertx的线程模型是怎么样的? 我此刻在哪?
image.png