1什乙、什么是vertx
vert.x是Eclipse軟件基金會頂級java開源項目之一,它基于netty的雹熬、運行在jvm之上的、支持多種編程語言的異步谣膳、非阻塞竿报、響應(yīng)式編程的工具集。
vert.x支持java,Kotlin,JavaScript, Groovy,Ruby,Scala
2参歹、Vert.x擁有目前最完整的異步生態(tài)系統(tǒng)
Vert.x可以開發(fā)Web應(yīng)用仰楚,但Vert.x不僅僅是一個Web開發(fā)框架,他更像Spring全家桶犬庇,是一個技術(shù)棧),或者說是一個Vert.x生態(tài)體系侨嘀。在這個體系中臭挽,Vert.x提供了一些列配套的異步組件。下面對Vertx生態(tài)和Spring生態(tài)做一個對比:
項目 | Spring | Vertx |
---|---|---|
核心框架 | spring-core | vertx-core |
Web開發(fā) | spring-webmvc | vertx-web |
jdbc框架 | spring-jdbc | vertx-jdbc-client |
redis | spring-data-redis | vertx-redis-client |
微服務(wù) | spring-cloud | vertx-hazelcast |
可以說咬腕,很多的spring能做的事情欢峰,Vertx也都能實現(xiàn)。在性能上vertx系列也是甩spring幾百條街
那么既然如此涨共,Vertx用戶群如此小眾纽帖? 被spring甩幾百條街呢?
Vertx的操作是異步的举反。異步帶來了更高的性能懊直,但同時也帶來了編碼和調(diào)試的復(fù)雜度,對于追求效率工作的同學(xué)來說并不是一件輕松的事
畢竟早點下班比高并發(fā)重要...............
Vert.x 入門Hello Wolrd
1.pom文件
<dependency>
<groupId>io.vertx</groupId>
<artifactId>vertx-web</artifactId>
<version>4.0.2</version>
</dependency>
2火鼻、創(chuàng)建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 {
// 創(chuàng)建HttpServer
HttpServer server = vertx.createHttpServer();
// 創(chuàng)建路由對象
Router router = Router.router(vertx);
//響應(yīng)請求
router.route("/").handler(event -> event.end("hello world"));
// 把請求交給路由處理
server.requestHandler(router);
//監(jiān)聽端口
server.listen(9999).onComplete(event -> {
if(event.succeeded()){
System.out.println("服務(wù)器啟動成功 端口:" + 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());
}
疑問環(huán)節(jié)
1、vertx的線程模型是怎么樣的? 我此刻在哪魁索?