Interested Article - Vert.x
![](/images/008/237/8237252/1.jpg?rand=391104)
![](https://cdn.wafarin.com/avatars/99c307a7bcd9067efb2967906eef4b87.jpg)
- 2021-11-20
- 1
История
Eclipse Vert.x — многоязыковой ( Java , Kotlin , JavaScript , Groovy ) асинхронный веб- фреймворк работающий на событийно-ориентированной архитектуре и запускается поверх JVM .
Vert.x начал разрабатывать Tim Fox в 2011 пока он работал в VMware .
С версии 2.1.4, Vert.x предоставляет свой API на Java , JavaScript , Groovy , Ruby , Python , Scala , Clojure и Ceylon .
С версии 3.7.0, Vert.x предоставляет свой API на Java, JavaScript, Groovy, Ruby, Scala, Kotlin and Ceylon.
С версии 3.9.1, Vert.x предоставляет свой API на Java, JavaScript, Groovy, Ruby, Scala and Kotlin.
12 января 2016 Tim Fox ушел с поста руководителя проекта Vert.x и на его место встал Julien Viet.
Архитектура
Vert.x использует в своей работе неблокирующий клиенто-серверный фреймворк Netty.
Verticle — это аналог сервлета(или «актора») и является атомарной единицей развёртывания в приложении. Есть 2 типа: Стандартный и Рабочий .
public class MyVerticle extends AbstractVerticle {
// Called when verticle is deployed
public void start() {
}
// Optional - called when verticle is undeployed
public void stop() {
}
}
Handler — обработчик событий внутри Verticle.
HttpServer server = vertx.createHttpServer();
// Router
Router router = Router.router(vertx);
// set Handler for every request
router.route().handler(ctx -> {
// This handler will be called for every request
HttpServerResponse response = ctx.response();
response.putHeader("content-type", "text/plain");
// Write to the response and end it
response.end("Hello World from Vert.x-Web!");
});
server.requestHandler(router).listen(8080);
Router — главный компонент по поиску совпадений для пришедшего запроса.
Route route = router.route("/some/path/");
Route route = router.route().path("/some/path/");
route.handler(ctx -> {
// This handler will be called for the following request paths:
// `/some/path/`
// `/some/path//`
//
// but not:
// `/some/path` the end slash in the path makes it strict
// `/some/path/subdir`
});
//router for POST request
router.post("/some/endpoint").handler(ctx -> {
ctx.request().setExpectMultipart(true);
ctx.next();
});
//router for GET request
router
.get("/some/path")
.respond(
ctx -> ctx
.response()
.putHeader("Content-Type", "text/plain")
.end("hello world!"));
Возможности
- Компоненты могут быть написаны на таких языках как: Java, JavaScript, Groovy, Ruby, Scala, Kotlin и Ceylon.
- Простая асинхронная модель позволяющая писать масштабируемые и неблокирующие приложения.
- Шина событий позволяющая передавать сообщения как внутри приложения, так и между его узлами (нодами).
- Модель «акторов» позволяющая запускать «тяжелые» процессы в для обработки данных или их получении.
- Интеграция с шаблонным движками (MVEL, Jade, Handlebars, Thymeleaf, Apache FreeMarker, Pebble, Rocker, HTTL, Rythm)
- Vert.x 3 требует версии Java не ниже 8
Реализация следующих свойств:
- Кластеризация через Hazelcast, Infinispan и так далее.
- Тестирование через JUnit 5
- Подключение к разным Базам Данных( JDBC , MySQL , PostgreSQL , DB2 , MSSQL , MongoDB , Redis , Cassandra )
- Очереди сообщений ( Kafka , RabbitMQ , AMQP , MQTT )
- Авторизация через сторонние службы (JWT Auth, Oauth2 Auth)
- Мониторинг работы приложения (Zipkin, OpenTelemetry)
- Интеграция с различными протоколами как STOMP, SMTP и так далее.
- Shell — оболочка выполнения задач сервером.
- Интерфейс для разработки TCP, HTTP и UDP серверов и клиентов.
- Интерфейс для работы с файловой системой.
- Launcher запускающий приложение из архива jar.
- Реактивное программирование приложения при поддержке (RxJava 1, RxJava 2, RxJava 3, Mutiny)
Примеры
Запуск http-сервера на Java:
import io.vertx.core.AbstractVerticle;
public class Server extends AbstractVerticle {
public void start() {
vertx.createHttpServer().requestHandler(req -> {
req.response()
.putHeader("content-type", "text/plain")
.end("Hello from Vert.x!");
}).listen(8080);
}
}
Ссылки
- Дата обращения: 28 июня 2022. 26 мая 2022 года.
- . Дата обращения: 28 июля 2020. 19 мая 2021 года.
- GitHub страница проекта. - Последние изменения в релизе.
![](https://cdn.wafarin.com/avatars/99c307a7bcd9067efb2967906eef4b87.jpg)
- 2021-11-20
- 1