Upgrade to Pro — share decks privately, control downloads, hide ads and more …

JUGNsk Meetup #11. Борис Бочкарев: "Реактивное программирование. Vert.X vs Spring"

0605d4091b5f5ab4da0cb1e921aa3f57?s=47 jugnsk
October 29, 2019

JUGNsk Meetup #11. Борис Бочкарев: "Реактивное программирование. Vert.X vs Spring"

Если вы постоянно учитесь разрабатывать гибкие и хорошо масштабируемые приложения, то вы, по крайней мере, сталкивались с термином «реактивное программирование». Концепция неблокирующих, управляемых событий в приложении, которые масштабируются с небольшим количеством потоков, лежит в основе этой популярной парадигмы. Огромная обработка данных за миллисекунды с гарантированной высокой доступностью вынуждает создавать новую модель, называемую back-pressure. Это механизм, который не позволяет производителю перегружать потребителя - ключевой компонент в реактивном мире.

Spring является популярным фреймворком, который принял концепцию реактивности. С другой стороны, Vert.x уже завоевал популярность в сообществе Java благодаря своим возможностям разработки реактивных приложений на JVM. Оба фреймворка влияют на стиль архитектуры, и вам решать, какой из них вы выберете для своего следующего проекта.

В докладе обсудим следующие вопросы: «Что умеет Vert.X и почему его можно сопоставить со Spring?», «Сколько клиентов может обрабатывать Sping и Vert.X?», «Возможно ли сочетать два этих решения?» и конечно же «Что выгоднее для микросервисной архитектуры?».

0605d4091b5f5ab4da0cb1e921aa3f57?s=128

jugnsk

October 29, 2019
Tweet

Transcript

  1. 29 октября 2019 Реактивное программирование. Vert.X vs. Spring Framework Борис

    Бочкарев +1
  2. 29 октября 2019 +2 Борис Бочкарев специалист по подготовке кадров

    ООО "Предприятие ЭЛТЕКС" Tg: @BorisBochkarev GitHub: BorisBochkaryov e-Mail: Boris-Bochkaryov@yandex.ru
  3. 29 октября 2019 Реактивное программирование. Vert.X vs Spring +3 Кто

    использует реактивное программирование?
  4. 29 октября 2019 Реактивное программирование. Vert.X vs Spring +3 Кто

    использует реактивное программирование? Что используете?
  5. 29 октября 2019 Реактивное программирование. Vert.X vs Spring +3 1.

    Что умеет Vert.X и почему его можно сопоставить со Spring?
  6. 29 октября 2019 Реактивное программирование. Vert.X vs Spring +3 2.

    Сколько клиентов может обрабатывать Spring и Vert.X? 1. Что умеет Vert.X и почему его можно сопоставить со Spring?
  7. 29 октября 2019 Реактивное программирование. Vert.X vs Spring +3 3.

    Возможно ли интегрировать одно решение в другое? 2. Сколько клиентов может обрабатывать Spring и Vert.X? 1. Что умеет Vert.X и почему его можно сопоставить со Spring?
  8. 29 октября 2019 Реактивное программирование. Vert.X vs Spring +3 Реактивное

    программирование — парадигма программирования, ориентированная на потоки данных и распространение изменений. 3. Возможно ли интегрировать одно решение в другое? 2. Сколько клиентов может обрабатывать Spring и Vert.X? 1. Что умеет Vert.X и почему его можно сопоставить со Spring?
  9. 29 октября 2019 Реактивное программирование. Vert.X vs Spring +3 Реактивное

    программирование — парадигма программирования, ориентированная на потоки данных и распространение изменений. Rx = Observables + Data + Schedulers 3. Возможно ли интегрировать одно решение в другое? 2. Сколько клиентов может обрабатывать Spring и Vert.X? 1. Что умеет Vert.X и почему его можно сопоставить со Spring?
  10. 29 октября 2019 Реактивное программирование. Vert.X vs Spring +3 Реактивное

    программирование — парадигма программирования, ориентированная на потоки данных и распространение изменений. Rx = Observables + Data + Schedulers 3. Возможно ли интегрировать одно решение в другое? 2. Сколько клиентов может обрабатывать Spring и Vert.X? 1. Что умеет Vert.X и почему его можно сопоставить со Spring? JUGNsk10: Олег Докука - The State of Reactive Streams
  11. 29 октября 2019 Требования к реактивному программированию +4 1. Отзывчивость

    2. Масштабируемость 3. Отказоустойчивость 4. Обмен сообщениями
  12. 29 октября 2019 Требования к реактивному программированию +4 1. Отзывчивость

    2. Масштабируемость 3. Отказоустойчивость 4. Обмен сообщениями
  13. 29 октября 2019 Требования к реактивному программированию +4 1. Отзывчивость

    2. Масштабируемость 3. Отказоустойчивость 4. Обмен сообщениями
  14. 29 октября 2019 Требования к реактивному программированию +4 1. Отзывчивость

    2. Масштабируемость 3. Отказоустойчивость 4. Обмен сообщениями
  15. 29 октября 2019 Spring Framework +5 1. Поддерживаются только JVM

    языки
  16. 29 октября 2019 Spring Framework +5 1. Поддерживаются только JVM

    языки 2. Тяжеловес
  17. 29 октября 2019 Spring Framework +5 1. Поддерживаются только JVM

    языки 2. Тяжеловес ~18.5Mb
  18. 29 октября 2019 Spring Framework +5 1. Поддерживаются только JVM

    языки 2. Тяжеловес 3. По умолчанию не реактивный ~18.5Mb
  19. 29 октября 2019 Spring Framework +5 1. Поддерживаются только JVM

    языки 2. Тяжеловес 3. По умолчанию не реактивный Spring WebFlux ~18.5Mb
  20. 29 октября 2019 Spring Framework +5 1. Поддерживаются только JVM

    языки 2. Тяжеловес 3. По умолчанию не реактивный 4. Имеет собственную экосистему Spring WebFlux ~18.5Mb
  21. 29 октября 2019 Spring Framework +5 1. Поддерживаются только JVM

    языки 2. Тяжеловес 3. По умолчанию не реактивный 4. Имеет собственную экосистему 5. Медленный запуск Spring WebFlux ~18.5Mb
  22. 29 октября 2019 Возможности Vert.X +6 Масштабируемость Мультиязычный Java, Kotlin,

    Scala, JS, … Общее назначение https://vertx.io Сверхлегкий Реактивный Интеграция
  23. 29 октября 2019 Возможности Vert.X +6 Масштабируемость Мультиязычный Java, Kotlin,

    Scala, JS, … Общее назначение https://vertx.io Сверхлегкий ~6.3Mb Реактивный Интеграция
  24. 29 октября 2019 Кто использует Vert.X? +7 https://vertx.io

  25. 29 октября 2019 Кто использует Vert.X? +7 https://vertx.io

  26. 29 октября 2019 Кто использует Vert.X? +7 https://vertx.io

  27. 29 октября 2019 Vert.X vs. Spring +8 { "title": "JUG11",

    "peoples": [ { "id": 1, "fio": "Bochkarev Boris V" }, { "id": 2, "fio": "Ivanov Ivan I" } ] } Ожидаемый результат
  28. 29 октября 2019 public static void main(String[] args) throws InterruptedException

    { RouterFunction router = route(GET("/jug11"), request -> ok().contentType(APPLICATION_JSON).body(fromObject(jug11))); HttpHandler httpHandler = RouterFunctions.toHttpHandler(router); HttpServer .create() .port(8080) .handle(new ReactorHttpHandlerAdapter(httpHandler)) .bindNow(); Thread.currentThread().join(); } Spring WebFlux +9
  29. 29 октября 2019 public static void main(String[] args) throws InterruptedException

    { RouterFunction router = route(GET("/jug11"), request -> ok().contentType(APPLICATION_JSON).body(fromObject(jug11))); HttpHandler httpHandler = RouterFunctions.toHttpHandler(router); HttpServer .create() .port(8080) .handle(new ReactorHttpHandlerAdapter(httpHandler)) .bindNow(); Thread.currentThread().join(); } Spring WebFlux +9 public static void main(String[] args) throws InterruptedException { RouterFunction router = route(GET("/jug11"), request -> ok().contentType(APPLICATION_JSON).body(fromObject(jug11))); HttpHandler httpHandler = RouterFunctions.toHttpHandler(router); HttpServer .create() .port(8080) .handle(new ReactorHttpHandlerAdapter(httpHandler)) .bindNow(); Thread.currentThread().join(); }
  30. 29 октября 2019 public static void main(String[] args) throws InterruptedException

    { RouterFunction router = route(GET("/jug11"), request -> ok().contentType(APPLICATION_JSON).body(fromObject(jug11))); HttpHandler httpHandler = RouterFunctions.toHttpHandler(router); HttpServer .create() .port(8080) .handle(new ReactorHttpHandlerAdapter(httpHandler)) .bindNow(); Thread.currentThread().join(); } Spring WebFlux +9 public static void main(String[] args) throws InterruptedException { RouterFunction router = route(GET("/jug11"), request -> ok().contentType(APPLICATION_JSON).body(fromObject(jug11))); HttpHandler httpHandler = RouterFunctions.toHttpHandler(router); HttpServer .create() .port(8080) .handle(new ReactorHttpHandlerAdapter(httpHandler)) .bindNow(); Thread.currentThread().join(); } public static void main(String[] args) throws InterruptedException { RouterFunction router = route(GET("/jug11"), request -> ok().contentType(APPLICATION_JSON).body(fromObject(jug11))); HttpHandler httpHandler = RouterFunctions.toHttpHandler(router); HttpServer .create() .port(8080) .handle(new ReactorHttpHandlerAdapter(httpHandler)) .bindNow(); Thread.currentThread().join(); }
  31. 29 октября 2019 public static void main(String[] args) throws InterruptedException

    { RouterFunction router = route(GET("/jug11"), request -> ok().contentType(APPLICATION_JSON).body(fromObject(jug11))); HttpHandler httpHandler = RouterFunctions.toHttpHandler(router); HttpServer .create() .port(8080) .handle(new ReactorHttpHandlerAdapter(httpHandler)) .bindNow(); Thread.currentThread().join(); } Spring WebFlux +9 public static void main(String[] args) throws InterruptedException { RouterFunction router = route(GET("/jug11"), request -> ok().contentType(APPLICATION_JSON).body(fromObject(jug11))); HttpHandler httpHandler = RouterFunctions.toHttpHandler(router); HttpServer .create() .port(8080) .handle(new ReactorHttpHandlerAdapter(httpHandler)) .bindNow(); Thread.currentThread().join(); } public static void main(String[] args) throws InterruptedException { RouterFunction router = route(GET("/jug11"), request -> ok().contentType(APPLICATION_JSON).body(fromObject(jug11))); HttpHandler httpHandler = RouterFunctions.toHttpHandler(router); HttpServer .create() .port(8080) .handle(new ReactorHttpHandlerAdapter(httpHandler)) .bindNow(); Thread.currentThread().join(); } public static void main(String[] args) throws InterruptedException { RouterFunction router = route(GET("/jug11"), request -> ok().contentType(APPLICATION_JSON).body(fromObject(jug11))); HttpHandler httpHandler = RouterFunctions.toHttpHandler(router); HttpServer .create() .port(8080) .handle(new ReactorHttpHandlerAdapter(httpHandler)) .bindNow(); Thread.currentThread().join(); }
  32. 29 октября 2019 public static void main(String[] args) throws InterruptedException

    { RouterFunction router = route(GET("/jug11"), request -> ok().contentType(APPLICATION_JSON).body(fromObject(jug11))); HttpHandler httpHandler = RouterFunctions.toHttpHandler(router); HttpServer .create() .port(8080) .handle(new ReactorHttpHandlerAdapter(httpHandler)) .bindNow(); Thread.currentThread().join(); } Spring WebFlux +9 public static void main(String[] args) throws InterruptedException { RouterFunction router = route(GET("/jug11"), request -> ok().contentType(APPLICATION_JSON).body(fromObject(jug11))); HttpHandler httpHandler = RouterFunctions.toHttpHandler(router); HttpServer .create() .port(8080) .handle(new ReactorHttpHandlerAdapter(httpHandler)) .bindNow(); Thread.currentThread().join(); } public static void main(String[] args) throws InterruptedException { RouterFunction router = route(GET("/jug11"), request -> ok().contentType(APPLICATION_JSON).body(fromObject(jug11))); HttpHandler httpHandler = RouterFunctions.toHttpHandler(router); HttpServer .create() .port(8080) .handle(new ReactorHttpHandlerAdapter(httpHandler)) .bindNow(); Thread.currentThread().join(); } public static void main(String[] args) throws InterruptedException { RouterFunction router = route(GET("/jug11"), request -> ok().contentType(APPLICATION_JSON).body(fromObject(jug11))); HttpHandler httpHandler = RouterFunctions.toHttpHandler(router); HttpServer .create() .port(8080) .handle(new ReactorHttpHandlerAdapter(httpHandler)) .bindNow(); Thread.currentThread().join(); } public static void main(String[] args) throws InterruptedException { RouterFunction router = route(GET("/jug11"), request -> ok().contentType(APPLICATION_JSON).body(fromObject(jug11))); HttpHandler httpHandler = RouterFunctions.toHttpHandler(router); HttpServer .create() .port(8080) .handle(new ReactorHttpHandlerAdapter(httpHandler)) .bindNow(); Thread.currentThread().join(); }
  33. 29 октября 2019 Vert.X +10 dependencies { compile 'io.vertx:vertx-core:3.8.2' }

  34. 29 октября 2019 Vert.X +10 dependencies { compile 'io.vertx:vertx-core:3.8.2' }

    Vertx vertx = Vertx.vertx( new VertxOptions().setWorkerPoolSize(40) ); vertx.createHttpServer().requestHandler(request -> { if (request.uri().equals("/jug11")) request.response() .putHeader("Content-Type", "application/json") .end(jug11.toString()); else request.response().end(); }).listen(8080);
  35. 29 октября 2019 Vert.X +10 dependencies { compile 'io.vertx:vertx-core:3.8.2' }

    Vertx vertx = Vertx.vertx( new VertxOptions().setWorkerPoolSize(40) ); vertx.createHttpServer().requestHandler(request -> { if (request.uri().equals("/jug11")) request.response() .putHeader("Content-Type", "application/json") .end(jug11.toString()); else request.response().end(); }).listen(8080); Vertx vertx = Vertx.vertx( new VertxOptions().setWorkerPoolSize(40) ); vertx.createHttpServer().requestHandler(request -> { if (request.uri().equals("/jug11")) request.response() .putHeader("Content-Type", "application/json") .end(jug11.toString()); else request.response().end(); }).listen(8080);
  36. 29 октября 2019 Vert.X +10 dependencies { compile 'io.vertx:vertx-core:3.8.2' }

    Vertx vertx = Vertx.vertx( new VertxOptions().setWorkerPoolSize(40) ); vertx.createHttpServer().requestHandler(request -> { if (request.uri().equals("/jug11")) request.response() .putHeader("Content-Type", "application/json") .end(jug11.toString()); else request.response().end(); }).listen(8080); Vertx vertx = Vertx.vertx( new VertxOptions().setWorkerPoolSize(40) ); vertx.createHttpServer().requestHandler(request -> { if (request.uri().equals("/jug11")) request.response() .putHeader("Content-Type", "application/json") .end(jug11.toString()); else request.response().end(); }).listen(8080); Vertx vertx = Vertx.vertx( new VertxOptions().setWorkerPoolSize(40) ); vertx.createHttpServer().requestHandler(request -> { if (request.uri().equals("/jug11")) request.response() .putHeader("Content-Type", "application/json") .end(jug11.toString()); else request.response().end(); }).listen(8080);
  37. 29 октября 2019 Vert.X +10 dependencies { compile 'io.vertx:vertx-core:3.8.2' }

    Vertx vertx = Vertx.vertx( new VertxOptions().setWorkerPoolSize(40) ); vertx.createHttpServer().requestHandler(request -> { if (request.uri().equals("/jug11")) request.response() .putHeader("Content-Type", "application/json") .end(jug11.toString()); else request.response().end(); }).listen(8080); Vertx vertx = Vertx.vertx( new VertxOptions().setWorkerPoolSize(40) ); vertx.createHttpServer().requestHandler(request -> { if (request.uri().equals("/jug11")) request.response() .putHeader("Content-Type", "application/json") .end(jug11.toString()); else request.response().end(); }).listen(8080); Vertx vertx = Vertx.vertx( new VertxOptions().setWorkerPoolSize(40) ); vertx.createHttpServer().requestHandler(request -> { if (request.uri().equals("/jug11")) request.response() .putHeader("Content-Type", "application/json") .end(jug11.toString()); else request.response().end(); }).listen(8080); Vertx vertx = Vertx.vertx( new VertxOptions().setWorkerPoolSize(40) ); vertx.createHttpServer().requestHandler(request -> { if (request.uri().equals("/jug11")) request.response() .putHeader("Content-Type", "application/json") .end(jug11.toString()); else request.response().end(); }).listen(8080);
  38. 29 октября 2019 Vert.X +10 dependencies { compile 'io.vertx:vertx-core:3.8.2' }

    Vertx vertx = Vertx.vertx( new VertxOptions().setWorkerPoolSize(40) ); vertx.createHttpServer().requestHandler(request -> { if (request.uri().equals("/jug11")) request.response() .putHeader("Content-Type", "application/json") .end(jug11.toString()); else request.response().end(); }).listen(8080); Vertx vertx = Vertx.vertx( new VertxOptions().setWorkerPoolSize(40) ); vertx.createHttpServer().requestHandler(request -> { if (request.uri().equals("/jug11")) request.response() .putHeader("Content-Type", "application/json") .end(jug11.toString()); else request.response().end(); }).listen(8080); Vertx vertx = Vertx.vertx( new VertxOptions().setWorkerPoolSize(40) ); vertx.createHttpServer().requestHandler(request -> { if (request.uri().equals("/jug11")) request.response() .putHeader("Content-Type", "application/json") .end(jug11.toString()); else request.response().end(); }).listen(8080); Vertx vertx = Vertx.vertx( new VertxOptions().setWorkerPoolSize(40) ); vertx.createHttpServer().requestHandler(request -> { if (request.uri().equals("/jug11")) request.response() .putHeader("Content-Type", "application/json") .end(jug11.toString()); else request.response().end(); }).listen(8080); Vertx vertx = Vertx.vertx( new VertxOptions().setWorkerPoolSize(40) ); vertx.createHttpServer().requestHandler(request -> { if (request.uri().equals("/jug11")) request.response() .putHeader("Content-Type", "application/json") .end(jug11.toString()); else request.response().end(); }).listen(8080);
  39. 29 октября 2019 Кто тяжелее? +11 Spring WebFlux ~18.5Mb

  40. 29 октября 2019 Кто тяжелее? +11 Spring WebFlux Vert.X ~18.5Mb

    ~6.3Mb
  41. 29 октября 2019 Vert.X. Шина данных +12 EventBus eb =

    vertx.eventBus(); eb.consumer("jug.nsk", message -> { System.out.println("Получено новое сообщение: " + message.body()); }); Регистрация шины данных
  42. 29 октября 2019 Vert.X. Шина данных +12 EventBus eb =

    vertx.eventBus(); eb.consumer("jug.nsk", message -> { System.out.println("Получено новое сообщение: " + message.body()); }); Регистрация шины данных eventBus.publish("jug.nsk", "Анонс JUGNsk 12"); Публикация сообщения (всем)
  43. 29 октября 2019 Vert.X. Шина данных +12 EventBus eb =

    vertx.eventBus(); eb.consumer("jug.nsk", message -> { System.out.println("Получено новое сообщение: " + message.body()); }); Регистрация шины данных eventBus.publish("jug.nsk", "Анонс JUGNsk 12"); Публикация сообщения (всем) Отправка сообщения (одному, RR) eventBus.send("jug.nsk", "Хочешь выступить на JUGNsk12?");
  44. 29 октября 2019 Vert.X. Кластерная шина данных +13 VertxOptions options

    = new VertxOptions() .setEventBusOptions(new EventBusOptions() .setClusterPublicHost("myhost") .setClusterPublicPort(1234) ); Vertx.clusteredVertx(options, res -> { if (res.succeeded()) { Vertx vertx = res.result(); EventBus eventBus = vertx.eventBus(); System.out.println("Удалось присоединиться к кластеру: " + eventBus); } else { System.out.println("Ошибка: " + res.cause()); } });
  45. 29 октября 2019 Vert.X. Кластерная шина данных +13 VertxOptions options

    = new VertxOptions() .setEventBusOptions(new EventBusOptions() .setClusterPublicHost("myhost") .setClusterPublicPort(1234) ); Vertx.clusteredVertx(options, res -> { if (res.succeeded()) { Vertx vertx = res.result(); EventBus eventBus = vertx.eventBus(); System.out.println("Удалось присоединиться к кластеру: " + eventBus); } else { System.out.println("Ошибка: " + res.cause()); } }); VertxOptions options = new VertxOptions() .setEventBusOptions(new EventBusOptions() .setClusterPublicHost("myhost") .setClusterPublicPort(1234) ); Vertx.clusteredVertx(options, res -> { if (res.succeeded()) { Vertx vertx = res.result(); EventBus eventBus = vertx.eventBus(); System.out.println("Удалось присоединиться к кластеру: " + eventBus); } else { System.out.println("Ошибка: " + res.cause()); } });
  46. 29 октября 2019 Vert.X. Кластерная шина данных +13 VertxOptions options

    = new VertxOptions() .setEventBusOptions(new EventBusOptions() .setClusterPublicHost("myhost") .setClusterPublicPort(1234) ); Vertx.clusteredVertx(options, res -> { if (res.succeeded()) { Vertx vertx = res.result(); EventBus eventBus = vertx.eventBus(); System.out.println("Удалось присоединиться к кластеру: " + eventBus); } else { System.out.println("Ошибка: " + res.cause()); } }); VertxOptions options = new VertxOptions() .setEventBusOptions(new EventBusOptions() .setClusterPublicHost("myhost") .setClusterPublicPort(1234) ); Vertx.clusteredVertx(options, res -> { if (res.succeeded()) { Vertx vertx = res.result(); EventBus eventBus = vertx.eventBus(); System.out.println("Удалось присоединиться к кластеру: " + eventBus); } else { System.out.println("Ошибка: " + res.cause()); } }); VertxOptions options = new VertxOptions() .setEventBusOptions(new EventBusOptions() .setClusterPublicHost("myhost") .setClusterPublicPort(1234) ); Vertx.clusteredVertx(options, res -> { if (res.succeeded()) { Vertx vertx = res.result(); EventBus eventBus = vertx.eventBus(); System.out.println("Удалось присоединиться к кластеру: " + eventBus); } else { System.out.println("Ошибка: " + res.cause()); } });
  47. 29 октября 2019 Vert.X. Кластерная шина данных +13 VertxOptions options

    = new VertxOptions() .setEventBusOptions(new EventBusOptions() .setClusterPublicHost("myhost") .setClusterPublicPort(1234) ); Vertx.clusteredVertx(options, res -> { if (res.succeeded()) { Vertx vertx = res.result(); EventBus eventBus = vertx.eventBus(); System.out.println("Удалось присоединиться к кластеру: " + eventBus); } else { System.out.println("Ошибка: " + res.cause()); } }); VertxOptions options = new VertxOptions() .setEventBusOptions(new EventBusOptions() .setClusterPublicHost("myhost") .setClusterPublicPort(1234) ); Vertx.clusteredVertx(options, res -> { if (res.succeeded()) { Vertx vertx = res.result(); EventBus eventBus = vertx.eventBus(); System.out.println("Удалось присоединиться к кластеру: " + eventBus); } else { System.out.println("Ошибка: " + res.cause()); } }); VertxOptions options = new VertxOptions() .setEventBusOptions(new EventBusOptions() .setClusterPublicHost("myhost") .setClusterPublicPort(1234) ); Vertx.clusteredVertx(options, res -> { if (res.succeeded()) { Vertx vertx = res.result(); EventBus eventBus = vertx.eventBus(); System.out.println("Удалось присоединиться к кластеру: " + eventBus); } else { System.out.println("Ошибка: " + res.cause()); } }); VertxOptions options = new VertxOptions() .setEventBusOptions(new EventBusOptions() .setClusterPublicHost("myhost") .setClusterPublicPort(1234) ); Vertx.clusteredVertx(options, res -> { if (res.succeeded()) { Vertx vertx = res.result(); EventBus eventBus = vertx.eventBus(); System.out.println("Удалось присоединиться к кластеру: " + eventBus); } else { System.out.println("Ошибка: " + res.cause()); } });
  48. 29 октября 2019 Vert.X. Кластерная шина данных +13 VertxOptions options

    = new VertxOptions() .setEventBusOptions(new EventBusOptions() .setClusterPublicHost("myhost") .setClusterPublicPort(1234) ); Vertx.clusteredVertx(options, res -> { if (res.succeeded()) { Vertx vertx = res.result(); EventBus eventBus = vertx.eventBus(); System.out.println("Удалось присоединиться к кластеру: " + eventBus); } else { System.out.println("Ошибка: " + res.cause()); } }); VertxOptions options = new VertxOptions() .setEventBusOptions(new EventBusOptions() .setClusterPublicHost("myhost") .setClusterPublicPort(1234) ); Vertx.clusteredVertx(options, res -> { if (res.succeeded()) { Vertx vertx = res.result(); EventBus eventBus = vertx.eventBus(); System.out.println("Удалось присоединиться к кластеру: " + eventBus); } else { System.out.println("Ошибка: " + res.cause()); } }); VertxOptions options = new VertxOptions() .setEventBusOptions(new EventBusOptions() .setClusterPublicHost("myhost") .setClusterPublicPort(1234) ); Vertx.clusteredVertx(options, res -> { if (res.succeeded()) { Vertx vertx = res.result(); EventBus eventBus = vertx.eventBus(); System.out.println("Удалось присоединиться к кластеру: " + eventBus); } else { System.out.println("Ошибка: " + res.cause()); } }); VertxOptions options = new VertxOptions() .setEventBusOptions(new EventBusOptions() .setClusterPublicHost("myhost") .setClusterPublicPort(1234) ); Vertx.clusteredVertx(options, res -> { if (res.succeeded()) { Vertx vertx = res.result(); EventBus eventBus = vertx.eventBus(); System.out.println("Удалось присоединиться к кластеру: " + eventBus); } else { System.out.println("Ошибка: " + res.cause()); } }); VertxOptions options = new VertxOptions() .setEventBusOptions(new EventBusOptions() .setClusterPublicHost("myhost") .setClusterPublicPort(1234) ); Vertx.clusteredVertx(options, res -> { if (res.succeeded()) { Vertx vertx = res.result(); EventBus eventBus = vertx.eventBus(); System.out.println("Удалось присоединиться к кластеру: " + eventBus); } else { System.out.println("Ошибка: " + res.cause()); } });
  49. 29 октября 2019 Vert.X. Кластерная шина данных +13 VertxOptions options

    = new VertxOptions() .setEventBusOptions(new EventBusOptions() .setClusterPublicHost("myhost") .setClusterPublicPort(1234) ); Vertx.clusteredVertx(options, res -> { if (res.succeeded()) { Vertx vertx = res.result(); EventBus eventBus = vertx.eventBus(); System.out.println("Удалось присоединиться к кластеру: " + eventBus); } else { System.out.println("Ошибка: " + res.cause()); } }); VertxOptions options = new VertxOptions() .setEventBusOptions(new EventBusOptions() .setClusterPublicHost("myhost") .setClusterPublicPort(1234) ); Vertx.clusteredVertx(options, res -> { if (res.succeeded()) { Vertx vertx = res.result(); EventBus eventBus = vertx.eventBus(); System.out.println("Удалось присоединиться к кластеру: " + eventBus); } else { System.out.println("Ошибка: " + res.cause()); } }); VertxOptions options = new VertxOptions() .setEventBusOptions(new EventBusOptions() .setClusterPublicHost("myhost") .setClusterPublicPort(1234) ); Vertx.clusteredVertx(options, res -> { if (res.succeeded()) { Vertx vertx = res.result(); EventBus eventBus = vertx.eventBus(); System.out.println("Удалось присоединиться к кластеру: " + eventBus); } else { System.out.println("Ошибка: " + res.cause()); } }); VertxOptions options = new VertxOptions() .setEventBusOptions(new EventBusOptions() .setClusterPublicHost("myhost") .setClusterPublicPort(1234) ); Vertx.clusteredVertx(options, res -> { if (res.succeeded()) { Vertx vertx = res.result(); EventBus eventBus = vertx.eventBus(); System.out.println("Удалось присоединиться к кластеру: " + eventBus); } else { System.out.println("Ошибка: " + res.cause()); } }); VertxOptions options = new VertxOptions() .setEventBusOptions(new EventBusOptions() .setClusterPublicHost("myhost") .setClusterPublicPort(1234) ); Vertx.clusteredVertx(options, res -> { if (res.succeeded()) { Vertx vertx = res.result(); EventBus eventBus = vertx.eventBus(); System.out.println("Удалось присоединиться к кластеру: " + eventBus); } else { System.out.println("Ошибка: " + res.cause()); } }); VertxOptions options = new VertxOptions() .setEventBusOptions(new EventBusOptions() .setClusterPublicHost("myhost") .setClusterPublicPort(1234) ); Vertx.clusteredVertx(options, res -> { if (res.succeeded()) { Vertx vertx = res.result(); EventBus eventBus = vertx.eventBus(); System.out.println("Удалось присоединиться к кластеру: " + eventBus); } else { System.out.println("Ошибка: " + res.cause()); } });
  50. 29 октября 2019 Vert.X. TCP сервер +14 Vertx vertx =

    Vertx.vertx(new VertxOptions().setWorkerPoolSize(40)); NetServer TCPServer = vertx.createNetServer(); TCPServer.connectHandler(res -> { System.out.println(res); res.handler(buff -> { System.out.println(buff.getString(0, buff.length())); }); }); TCPServer.listen(8888, "0.0.0.0", res -> { if (res.succeeded()) { System.out.println("Server is now listening!"); } else { System.out.println("Failed to bind!"); } });
  51. 29 октября 2019 Vert.X. TCP сервер +14 Vertx vertx =

    Vertx.vertx(new VertxOptions().setWorkerPoolSize(40)); NetServer TCPServer = vertx.createNetServer(); TCPServer.connectHandler(res -> { System.out.println(res); res.handler(buff -> { System.out.println(buff.getString(0, buff.length())); }); }); TCPServer.listen(8888, "0.0.0.0", res -> { if (res.succeeded()) { System.out.println("Server is now listening!"); } else { System.out.println("Failed to bind!"); } }); Vertx vertx = Vertx.vertx(new VertxOptions().setWorkerPoolSize(40)); NetServer TCPServer = vertx.createNetServer(); TCPServer.connectHandler(res -> { System.out.println(res); res.handler(buff -> { System.out.println(buff.getString(0, buff.length())); }); }); TCPServer.listen(8888, "0.0.0.0", res -> { if (res.succeeded()) { System.out.println("Server is now listening!"); } else { System.out.println("Failed to bind!"); } });
  52. 29 октября 2019 Vert.X. TCP сервер +14 Vertx vertx =

    Vertx.vertx(new VertxOptions().setWorkerPoolSize(40)); NetServer TCPServer = vertx.createNetServer(); TCPServer.connectHandler(res -> { System.out.println(res); res.handler(buff -> { System.out.println(buff.getString(0, buff.length())); }); }); TCPServer.listen(8888, "0.0.0.0", res -> { if (res.succeeded()) { System.out.println("Server is now listening!"); } else { System.out.println("Failed to bind!"); } }); Vertx vertx = Vertx.vertx(new VertxOptions().setWorkerPoolSize(40)); NetServer TCPServer = vertx.createNetServer(); TCPServer.connectHandler(res -> { System.out.println(res); res.handler(buff -> { System.out.println(buff.getString(0, buff.length())); }); }); TCPServer.listen(8888, "0.0.0.0", res -> { if (res.succeeded()) { System.out.println("Server is now listening!"); } else { System.out.println("Failed to bind!"); } }); Vertx vertx = Vertx.vertx(new VertxOptions().setWorkerPoolSize(40)); NetServer TCPServer = vertx.createNetServer(); TCPServer.connectHandler(res -> { System.out.println(res); res.handler(buff -> { System.out.println(buff.getString(0, buff.length())); }); }); TCPServer.listen(8888, "0.0.0.0", res -> { if (res.succeeded()) { System.out.println("Server is now listening!"); } else { System.out.println("Failed to bind!"); } });
  53. 29 октября 2019 Vert.X. TCP сервер +14 Vertx vertx =

    Vertx.vertx(new VertxOptions().setWorkerPoolSize(40)); NetServer TCPServer = vertx.createNetServer(); TCPServer.connectHandler(res -> { System.out.println(res); res.handler(buff -> { System.out.println(buff.getString(0, buff.length())); }); }); TCPServer.listen(8888, "0.0.0.0", res -> { if (res.succeeded()) { System.out.println("Server is now listening!"); } else { System.out.println("Failed to bind!"); } }); Vertx vertx = Vertx.vertx(new VertxOptions().setWorkerPoolSize(40)); NetServer TCPServer = vertx.createNetServer(); TCPServer.connectHandler(res -> { System.out.println(res); res.handler(buff -> { System.out.println(buff.getString(0, buff.length())); }); }); TCPServer.listen(8888, "0.0.0.0", res -> { if (res.succeeded()) { System.out.println("Server is now listening!"); } else { System.out.println("Failed to bind!"); } }); Vertx vertx = Vertx.vertx(new VertxOptions().setWorkerPoolSize(40)); NetServer TCPServer = vertx.createNetServer(); TCPServer.connectHandler(res -> { System.out.println(res); res.handler(buff -> { System.out.println(buff.getString(0, buff.length())); }); }); TCPServer.listen(8888, "0.0.0.0", res -> { if (res.succeeded()) { System.out.println("Server is now listening!"); } else { System.out.println("Failed to bind!"); } }); Vertx vertx = Vertx.vertx(new VertxOptions().setWorkerPoolSize(40)); NetServer TCPServer = vertx.createNetServer(); TCPServer.connectHandler(res -> { System.out.println(res); res.handler(buff -> { System.out.println(buff.getString(0, buff.length())); }); }); TCPServer.listen(8888, "0.0.0.0", res -> { if (res.succeeded()) { System.out.println("Server is now listening!"); } else { System.out.println("Failed to bind!"); } });
  54. 29 октября 2019 Vert.X. TCP сервер +14 Vertx vertx =

    Vertx.vertx(new VertxOptions().setWorkerPoolSize(40)); NetServer TCPServer = vertx.createNetServer(); TCPServer.connectHandler(res -> { System.out.println(res); res.handler(buff -> { System.out.println(buff.getString(0, buff.length())); }); }); TCPServer.listen(8888, "0.0.0.0", res -> { if (res.succeeded()) { System.out.println("Server is now listening!"); } else { System.out.println("Failed to bind!"); } }); Vertx vertx = Vertx.vertx(new VertxOptions().setWorkerPoolSize(40)); NetServer TCPServer = vertx.createNetServer(); TCPServer.connectHandler(res -> { System.out.println(res); res.handler(buff -> { System.out.println(buff.getString(0, buff.length())); }); }); TCPServer.listen(8888, "0.0.0.0", res -> { if (res.succeeded()) { System.out.println("Server is now listening!"); } else { System.out.println("Failed to bind!"); } }); Vertx vertx = Vertx.vertx(new VertxOptions().setWorkerPoolSize(40)); NetServer TCPServer = vertx.createNetServer(); TCPServer.connectHandler(res -> { System.out.println(res); res.handler(buff -> { System.out.println(buff.getString(0, buff.length())); }); }); TCPServer.listen(8888, "0.0.0.0", res -> { if (res.succeeded()) { System.out.println("Server is now listening!"); } else { System.out.println("Failed to bind!"); } }); Vertx vertx = Vertx.vertx(new VertxOptions().setWorkerPoolSize(40)); NetServer TCPServer = vertx.createNetServer(); TCPServer.connectHandler(res -> { System.out.println(res); res.handler(buff -> { System.out.println(buff.getString(0, buff.length())); }); }); TCPServer.listen(8888, "0.0.0.0", res -> { if (res.succeeded()) { System.out.println("Server is now listening!"); } else { System.out.println("Failed to bind!"); } }); Vertx vertx = Vertx.vertx(new VertxOptions().setWorkerPoolSize(40)); NetServer TCPServer = vertx.createNetServer(); TCPServer.connectHandler(res -> { System.out.println(res); res.handler(buff -> { System.out.println(buff.getString(0, buff.length())); }); }); TCPServer.listen(8888, "0.0.0.0", res -> { if (res.succeeded()) { System.out.println("Server is now listening!"); } else { System.out.println("Failed to bind!"); } });
  55. 29 октября 2019 Vert.X. UDP сервер +15 Vertx vertx =

    Vertx.vertx(new VertxOptions().setWorkerPoolSize(40)); DatagramSocket UDPServer = vertx.createDatagramSocket(); UDPServer.handler(buff -> { System.out.println(buff.getString(0, buff.length())); }); UDPServer.listen(8888, "0.0.0.0", res -> { if (res.succeeded()) { System.out.println("Server is now listening!"); } else { System.out.println("Failed to bind!"); } });
  56. 29 октября 2019 Vert.X. UDP сервер +15 Vertx vertx =

    Vertx.vertx(new VertxOptions().setWorkerPoolSize(40)); DatagramSocket UDPServer = vertx.createDatagramSocket(); UDPServer.handler(buff -> { System.out.println(buff.getString(0, buff.length())); }); UDPServer.listen(8888, "0.0.0.0", res -> { if (res.succeeded()) { System.out.println("Server is now listening!"); } else { System.out.println("Failed to bind!"); } }); Vertx vertx = Vertx.vertx(new VertxOptions().setWorkerPoolSize(40)); DatagramSocket UDPServer = vertx.createDatagramSocket(); UDPServer.handler(buff -> { System.out.println(buff.getString(0, buff.length())); }); UDPServer.listen(8888, "0.0.0.0", res -> { if (res.succeeded()) { System.out.println("Server is now listening!"); } else { System.out.println("Failed to bind!"); } });
  57. 29 октября 2019 Vert.X. UDP сервер +15 Vertx vertx =

    Vertx.vertx(new VertxOptions().setWorkerPoolSize(40)); DatagramSocket UDPServer = vertx.createDatagramSocket(); UDPServer.handler(buff -> { System.out.println(buff.getString(0, buff.length())); }); UDPServer.listen(8888, "0.0.0.0", res -> { if (res.succeeded()) { System.out.println("Server is now listening!"); } else { System.out.println("Failed to bind!"); } }); Vertx vertx = Vertx.vertx(new VertxOptions().setWorkerPoolSize(40)); DatagramSocket UDPServer = vertx.createDatagramSocket(); UDPServer.handler(buff -> { System.out.println(buff.getString(0, buff.length())); }); UDPServer.listen(8888, "0.0.0.0", res -> { if (res.succeeded()) { System.out.println("Server is now listening!"); } else { System.out.println("Failed to bind!"); } }); Vertx vertx = Vertx.vertx(new VertxOptions().setWorkerPoolSize(40)); DatagramSocket UDPServer = vertx.createDatagramSocket(); UDPServer.handler(buff -> { System.out.println(buff.getString(0, buff.length())); }); UDPServer.listen(8888, "0.0.0.0", res -> { if (res.succeeded()) { System.out.println("Server is now listening!"); } else { System.out.println("Failed to bind!"); } });
  58. 29 октября 2019 Vert.X. HTTP клиент +16 HttpClientOptions options =

    new HttpClientOptions(). setProtocolVersion(HttpVersion.HTTP_2). setSsl(true). setUseAlpn(true). setTrustAll(true); HttpClient client = vertx.createHttpClient(options); client.requestAbs(HttpMethod.GET, "https://api.vk.com/method/users.get? user_ids=23382988&fields=bdate&access_token=VK_API_TOKEN&v=5.101", result -> result.bodyHandler(body -> System.out.println(body.toString()))) .end();
  59. 29 октября 2019 Vert.X. HTTP клиент +16 HttpClientOptions options =

    new HttpClientOptions(). setProtocolVersion(HttpVersion.HTTP_2). setSsl(true). setUseAlpn(true). setTrustAll(true); HttpClient client = vertx.createHttpClient(options); client.requestAbs(HttpMethod.GET, "https://api.vk.com/method/users.get? user_ids=23382988&fields=bdate&access_token=VK_API_TOKEN&v=5.101", result -> result.bodyHandler(body -> System.out.println(body.toString()))) .end(); HttpClientOptions options = new HttpClientOptions(). setProtocolVersion(HttpVersion.HTTP_2). setSsl(true). setUseAlpn(true). setTrustAll(true); HttpClient client = vertx.createHttpClient(options); client.requestAbs(HttpMethod.GET, "https://api.vk.com/method/users.get? user_ids=23382988&fields=bdate&access_token=VK_API_TOKEN&v=5.101", result -> result.bodyHandler(body -> System.out.println(body.toString()))) .end();
  60. 29 октября 2019 Vert.X. HTTP клиент +16 HttpClientOptions options =

    new HttpClientOptions(). setProtocolVersion(HttpVersion.HTTP_2). setSsl(true). setUseAlpn(true). setTrustAll(true); HttpClient client = vertx.createHttpClient(options); client.requestAbs(HttpMethod.GET, "https://api.vk.com/method/users.get? user_ids=23382988&fields=bdate&access_token=VK_API_TOKEN&v=5.101", result -> result.bodyHandler(body -> System.out.println(body.toString()))) .end(); HttpClientOptions options = new HttpClientOptions(). setProtocolVersion(HttpVersion.HTTP_2). setSsl(true). setUseAlpn(true). setTrustAll(true); HttpClient client = vertx.createHttpClient(options); client.requestAbs(HttpMethod.GET, "https://api.vk.com/method/users.get? user_ids=23382988&fields=bdate&access_token=VK_API_TOKEN&v=5.101", result -> result.bodyHandler(body -> System.out.println(body.toString()))) .end(); HttpClientOptions options = new HttpClientOptions(). setProtocolVersion(HttpVersion.HTTP_2). setSsl(true). setUseAlpn(true). setTrustAll(true); HttpClient client = vertx.createHttpClient(options); client.requestAbs(HttpMethod.GET, "https://api.vk.com/method/users.get? user_ids=23382988&fields=bdate&access_token=VK_API_TOKEN&v=5.101", result -> result.bodyHandler(body -> System.out.println(body.toString()))) .end();
  61. 29 октября 2019 Vert.X. HTTP клиент +16 HttpClientOptions options =

    new HttpClientOptions(). setProtocolVersion(HttpVersion.HTTP_2). setSsl(true). setUseAlpn(true). setTrustAll(true); HttpClient client = vertx.createHttpClient(options); client.requestAbs(HttpMethod.GET, "https://api.vk.com/method/users.get? user_ids=23382988&fields=bdate&access_token=VK_API_TOKEN&v=5.101", result -> result.bodyHandler(body -> System.out.println(body.toString()))) .end(); HttpClientOptions options = new HttpClientOptions(). setProtocolVersion(HttpVersion.HTTP_2). setSsl(true). setUseAlpn(true). setTrustAll(true); HttpClient client = vertx.createHttpClient(options); client.requestAbs(HttpMethod.GET, "https://api.vk.com/method/users.get? user_ids=23382988&fields=bdate&access_token=VK_API_TOKEN&v=5.101", result -> result.bodyHandler(body -> System.out.println(body.toString()))) .end(); HttpClientOptions options = new HttpClientOptions(). setProtocolVersion(HttpVersion.HTTP_2). setSsl(true). setUseAlpn(true). setTrustAll(true); HttpClient client = vertx.createHttpClient(options); client.requestAbs(HttpMethod.GET, "https://api.vk.com/method/users.get? user_ids=23382988&fields=bdate&access_token=VK_API_TOKEN&v=5.101", result -> result.bodyHandler(body -> System.out.println(body.toString()))) .end(); HttpClientOptions options = new HttpClientOptions(). setProtocolVersion(HttpVersion.HTTP_2). setSsl(true). setUseAlpn(true). setTrustAll(true); HttpClient client = vertx.createHttpClient(options); client.requestAbs(HttpMethod.GET, "https://api.vk.com/method/users.get? user_ids=23382988&fields=bdate&access_token=VK_API_TOKEN&v=5.101", result -> result.bodyHandler(body -> System.out.println(body.toString()))) .end();
  62. 29 октября 2019 Vert.X. HTTP клиент +16 HttpClientOptions options =

    new HttpClientOptions(). setProtocolVersion(HttpVersion.HTTP_2). setSsl(true). setUseAlpn(true). setTrustAll(true); HttpClient client = vertx.createHttpClient(options); client.requestAbs(HttpMethod.GET, "https://api.vk.com/method/users.get? user_ids=23382988&fields=bdate&access_token=VK_API_TOKEN&v=5.101", result -> result.bodyHandler(body -> System.out.println(body.toString()))) .end(); HttpClientOptions options = new HttpClientOptions(). setProtocolVersion(HttpVersion.HTTP_2). setSsl(true). setUseAlpn(true). setTrustAll(true); HttpClient client = vertx.createHttpClient(options); client.requestAbs(HttpMethod.GET, "https://api.vk.com/method/users.get? user_ids=23382988&fields=bdate&access_token=VK_API_TOKEN&v=5.101", result -> result.bodyHandler(body -> System.out.println(body.toString()))) .end(); HttpClientOptions options = new HttpClientOptions(). setProtocolVersion(HttpVersion.HTTP_2). setSsl(true). setUseAlpn(true). setTrustAll(true); HttpClient client = vertx.createHttpClient(options); client.requestAbs(HttpMethod.GET, "https://api.vk.com/method/users.get? user_ids=23382988&fields=bdate&access_token=VK_API_TOKEN&v=5.101", result -> result.bodyHandler(body -> System.out.println(body.toString()))) .end(); HttpClientOptions options = new HttpClientOptions(). setProtocolVersion(HttpVersion.HTTP_2). setSsl(true). setUseAlpn(true). setTrustAll(true); HttpClient client = vertx.createHttpClient(options); client.requestAbs(HttpMethod.GET, "https://api.vk.com/method/users.get? user_ids=23382988&fields=bdate&access_token=VK_API_TOKEN&v=5.101", result -> result.bodyHandler(body -> System.out.println(body.toString()))) .end(); HttpClientOptions options = new HttpClientOptions(). setProtocolVersion(HttpVersion.HTTP_2). setSsl(true). setUseAlpn(true). setTrustAll(true); HttpClient client = vertx.createHttpClient(options); client.requestAbs(HttpMethod.GET, "https://api.vk.com/method/users.get? user_ids=23382988&fields=bdate&access_token=VK_API_TOKEN&v=5.101", result -> result.bodyHandler(body -> System.out.println(body.toString()))) .end();
  63. 29 октября 2019 Vert.X. HTTP клиент +16 HttpClientOptions options =

    new HttpClientOptions(). setProtocolVersion(HttpVersion.HTTP_2). setSsl(true). setUseAlpn(true). setTrustAll(true); HttpClient client = vertx.createHttpClient(options); client.requestAbs(HttpMethod.GET, "https://api.vk.com/method/users.get? user_ids=23382988&fields=bdate&access_token=VK_API_TOKEN&v=5.101", result -> result.bodyHandler(body -> System.out.println(body.toString()))) .end(); HttpClientOptions options = new HttpClientOptions(). setProtocolVersion(HttpVersion.HTTP_2). setSsl(true). setUseAlpn(true). setTrustAll(true); HttpClient client = vertx.createHttpClient(options); client.requestAbs(HttpMethod.GET, "https://api.vk.com/method/users.get? user_ids=23382988&fields=bdate&access_token=VK_API_TOKEN&v=5.101", result -> result.bodyHandler(body -> System.out.println(body.toString()))) .end(); HttpClientOptions options = new HttpClientOptions(). setProtocolVersion(HttpVersion.HTTP_2). setSsl(true). setUseAlpn(true). setTrustAll(true); HttpClient client = vertx.createHttpClient(options); client.requestAbs(HttpMethod.GET, "https://api.vk.com/method/users.get? user_ids=23382988&fields=bdate&access_token=VK_API_TOKEN&v=5.101", result -> result.bodyHandler(body -> System.out.println(body.toString()))) .end(); HttpClientOptions options = new HttpClientOptions(). setProtocolVersion(HttpVersion.HTTP_2). setSsl(true). setUseAlpn(true). setTrustAll(true); HttpClient client = vertx.createHttpClient(options); client.requestAbs(HttpMethod.GET, "https://api.vk.com/method/users.get? user_ids=23382988&fields=bdate&access_token=VK_API_TOKEN&v=5.101", result -> result.bodyHandler(body -> System.out.println(body.toString()))) .end(); HttpClientOptions options = new HttpClientOptions(). setProtocolVersion(HttpVersion.HTTP_2). setSsl(true). setUseAlpn(true). setTrustAll(true); HttpClient client = vertx.createHttpClient(options); client.requestAbs(HttpMethod.GET, "https://api.vk.com/method/users.get? user_ids=23382988&fields=bdate&access_token=VK_API_TOKEN&v=5.101", result -> result.bodyHandler(body -> System.out.println(body.toString()))) .end(); HttpClientOptions options = new HttpClientOptions(). setProtocolVersion(HttpVersion.HTTP_2). setSsl(true). setUseAlpn(true). setTrustAll(true); HttpClient client = vertx.createHttpClient(options); client.requestAbs(HttpMethod.GET, "https://api.vk.com/method/users.get? user_ids=23382988&fields=bdate&access_token=VK_API_TOKEN&v=5.101", result -> result.bodyHandler(body -> System.out.println(body.toString()))) .end();
  64. 29 октября 2019 Vert.X. HTTP клиент +16 HttpClientOptions options =

    new HttpClientOptions(). setProtocolVersion(HttpVersion.HTTP_2). setSsl(true). setUseAlpn(true). setTrustAll(true); HttpClient client = vertx.createHttpClient(options); client.requestAbs(HttpMethod.GET, "https://api.vk.com/method/users.get? user_ids=23382988&fields=bdate&access_token=VK_API_TOKEN&v=5.101", result -> result.bodyHandler(body -> System.out.println(body.toString()))) .end(); HttpClientOptions options = new HttpClientOptions(). setProtocolVersion(HttpVersion.HTTP_2). setSsl(true). setUseAlpn(true). setTrustAll(true); HttpClient client = vertx.createHttpClient(options); client.requestAbs(HttpMethod.GET, "https://api.vk.com/method/users.get? user_ids=23382988&fields=bdate&access_token=VK_API_TOKEN&v=5.101", result -> result.bodyHandler(body -> System.out.println(body.toString()))) .end(); HttpClientOptions options = new HttpClientOptions(). setProtocolVersion(HttpVersion.HTTP_2). setSsl(true). setUseAlpn(true). setTrustAll(true); HttpClient client = vertx.createHttpClient(options); client.requestAbs(HttpMethod.GET, "https://api.vk.com/method/users.get? user_ids=23382988&fields=bdate&access_token=VK_API_TOKEN&v=5.101", result -> result.bodyHandler(body -> System.out.println(body.toString()))) .end(); HttpClientOptions options = new HttpClientOptions(). setProtocolVersion(HttpVersion.HTTP_2). setSsl(true). setUseAlpn(true). setTrustAll(true); HttpClient client = vertx.createHttpClient(options); client.requestAbs(HttpMethod.GET, "https://api.vk.com/method/users.get? user_ids=23382988&fields=bdate&access_token=VK_API_TOKEN&v=5.101", result -> result.bodyHandler(body -> System.out.println(body.toString()))) .end(); HttpClientOptions options = new HttpClientOptions(). setProtocolVersion(HttpVersion.HTTP_2). setSsl(true). setUseAlpn(true). setTrustAll(true); HttpClient client = vertx.createHttpClient(options); client.requestAbs(HttpMethod.GET, "https://api.vk.com/method/users.get? user_ids=23382988&fields=bdate&access_token=VK_API_TOKEN&v=5.101", result -> result.bodyHandler(body -> System.out.println(body.toString()))) .end(); HttpClientOptions options = new HttpClientOptions(). setProtocolVersion(HttpVersion.HTTP_2). setSsl(true). setUseAlpn(true). setTrustAll(true); HttpClient client = vertx.createHttpClient(options); client.requestAbs(HttpMethod.GET, "https://api.vk.com/method/users.get? user_ids=23382988&fields=bdate&access_token=VK_API_TOKEN&v=5.101", result -> result.bodyHandler(body -> System.out.println(body.toString()))) .end(); HttpClientOptions options = new HttpClientOptions(). setProtocolVersion(HttpVersion.HTTP_2). setSsl(true). setUseAlpn(true). setTrustAll(true); HttpClient client = vertx.createHttpClient(options); client.requestAbs(HttpMethod.GET, "https://api.vk.com/method/users.get? user_ids=23382988&fields=bdate&access_token=VK_API_TOKEN&v=5.101", result -> result.bodyHandler(body -> System.out.println(body.toString()))) .end();
  65. 29 октября 2019 Vert.X. Websocket +17 server.websocketHandler(websocket -> { if

    (websocket.path().equals("/myapi")) { websocket.reject(); } else { // Do something } }); Server
  66. 29 октября 2019 Vert.X. Websocket +17 server.websocketHandler(websocket -> { if

    (websocket.path().equals("/myapi")) { websocket.reject(); } else { // Do something } }); client.webSocket("/some-uri", res -> { if (res.succeeded()) { WebSocket ws = res.result(); System.out.println("Connected!"); } }); Server Client
  67. 29 октября 2019 Vert.X. Файловая система +18 FileSystem fs =

    vertx.fileSystem(); fs.copy("foo.txt", "bar.txt", res -> { if (res.succeeded()) { // Copied ok! } else { // Something went wrong } }); Копирование
  68. 29 октября 2019 Vert.X. Файловая система +18 FileSystem fs =

    vertx.fileSystem(); fs.copy("foo.txt", "bar.txt", res -> { if (res.succeeded()) { // Copied ok! } else { // Something went wrong } }); fs.move("foo.txt", "bar.txt", res -> { if (res.succeeded()) { // Copied ok! } else { // Something went wrong } }); Копирование Перемещение
  69. 29 октября 2019 Vert.X. Файловая система +19 FileSystem fs =

    vertx.fileSystem(); fs.copyBlocking("foo.txt", "bar.txt"); Копирование
  70. 29 октября 2019 Vert.X. Файловая система +19 FileSystem fs =

    vertx.fileSystem(); fs.copyBlocking("foo.txt", "bar.txt"); fs.moveBlocking("foo.txt", "bar.txt"); Копирование Перемещение
  71. 29 октября 2019 Vert.X. Файловая система +20 fs.readFile("readme.txt", result ->

    { if (result.succeeded()) { System.out.println(result.result()); } else { System.err.println("Oh oh ..." + result.cause()); } }); Чтение из файла
  72. 29 октября 2019 Vert.X. Файловая система +20 fs.readFile("readme.txt", result ->

    { if (result.succeeded()) { System.out.println(result.result()); } else { System.err.println("Oh oh ..." + result.cause()); } }); Чтение из файла fs.writeFile("readme.txt", Buffer.buffer("Hello"), result -> { if (result.succeeded()) { System.out.println(result.result()); } else { System.err.println("Oh oh ..." + result.cause()); } }); Запись в файл
  73. 29 октября 2019 Vert.X. Файловая система +21 fs.readDir(".", result ->

    { if (result.succeeded()) { System.out.println(result.result()); } else { System.err.println("Oh oh ..." + result.cause()); } }); Чтение директории
  74. 29 октября 2019 Vert.X. Файловая система +21 fs.readDir(".", result ->

    { if (result.succeeded()) { System.out.println(result.result()); } else { System.err.println("Oh oh ..." + result.cause()); } }); Чтение директории
  75. 29 октября 2019 Vert.X. Файловая система +22 fs.mkdir("example", result ->

    { if (result.succeeded()) { // make directory ok! } else { System.err.println("Oh oh ..." + result.cause()); } }); Создание директории
  76. 29 октября 2019 Vert.X vs. Spring +23 public class Launcher

    { public static void main(String args[]) { Vertx.vertx().deployVerticle("Server"); } } Launcher.java
  77. 29 октября 2019 Vert.X vs. Spring +23 public class Launcher

    { public static void main(String args[]) { Vertx.vertx().deployVerticle("Server"); } } Launcher.java public class Launcher { public static void main(String args[]) { Vertx.vertx().deployVerticle("Server"); } }
  78. public class Server extends AbstractVerticle { @Override public void start()

    { HttpServer server = vertx.createHttpServer(); Router router = Router.router(vertx); router.route(HttpMethod.GET, "/jug11").handler(routingContext -> { HttpServerRequest req = routingContext.request(); req.bodyHandler(buffer -> { routingContext.response().end(Json.encode(jug11)); }); }); server.requestHandler(router::accept).listen(8080); } } 29 октября 2019 Vert.X vs. Spring +24 Server.java
  79. public class Server extends AbstractVerticle { @Override public void start()

    { HttpServer server = vertx.createHttpServer(); Router router = Router.router(vertx); router.route(HttpMethod.GET, "/jug11").handler(routingContext -> { HttpServerRequest req = routingContext.request(); req.bodyHandler(buffer -> { routingContext.response().end(Json.encode(jug11)); }); }); server.requestHandler(router::accept).listen(8080); } } 29 октября 2019 Vert.X vs. Spring +24 Server.java public class Server extends AbstractVerticle { @Override public void start() { HttpServer server = vertx.createHttpServer(); Router router = Router.router(vertx); router.route(HttpMethod.GET, "/jug11").handler(routingContext -> { HttpServerRequest req = routingContext.request(); req.bodyHandler(buffer -> { routingContext.response().end(Json.encode(jug11)); }); }); server.requestHandler(router::accept).listen(8080); } }
  80. public class Server extends AbstractVerticle { @Override public void start()

    { HttpServer server = vertx.createHttpServer(); Router router = Router.router(vertx); router.route(HttpMethod.GET, "/jug11").handler(routingContext -> { HttpServerRequest req = routingContext.request(); req.bodyHandler(buffer -> { routingContext.response().end(Json.encode(jug11)); }); }); server.requestHandler(router::accept).listen(8080); } } 29 октября 2019 Vert.X vs. Spring +24 Server.java public class Server extends AbstractVerticle { @Override public void start() { HttpServer server = vertx.createHttpServer(); Router router = Router.router(vertx); router.route(HttpMethod.GET, "/jug11").handler(routingContext -> { HttpServerRequest req = routingContext.request(); req.bodyHandler(buffer -> { routingContext.response().end(Json.encode(jug11)); }); }); server.requestHandler(router::accept).listen(8080); } } public class Server extends AbstractVerticle { @Override public void start() { HttpServer server = vertx.createHttpServer(); Router router = Router.router(vertx); router.route(HttpMethod.GET, "/jug11").handler(routingContext -> { HttpServerRequest req = routingContext.request(); req.bodyHandler(buffer -> { routingContext.response().end(Json.encode(jug11)); }); }); server.requestHandler(router::accept).listen(8080); } }
  81. public class Server extends AbstractVerticle { @Override public void start()

    { HttpServer server = vertx.createHttpServer(); Router router = Router.router(vertx); router.route(HttpMethod.GET, "/jug11").handler(routingContext -> { HttpServerRequest req = routingContext.request(); req.bodyHandler(buffer -> { routingContext.response().end(Json.encode(jug11)); }); }); server.requestHandler(router::accept).listen(8080); } } 29 октября 2019 Vert.X vs. Spring +24 Server.java public class Server extends AbstractVerticle { @Override public void start() { HttpServer server = vertx.createHttpServer(); Router router = Router.router(vertx); router.route(HttpMethod.GET, "/jug11").handler(routingContext -> { HttpServerRequest req = routingContext.request(); req.bodyHandler(buffer -> { routingContext.response().end(Json.encode(jug11)); }); }); server.requestHandler(router::accept).listen(8080); } } public class Server extends AbstractVerticle { @Override public void start() { HttpServer server = vertx.createHttpServer(); Router router = Router.router(vertx); router.route(HttpMethod.GET, "/jug11").handler(routingContext -> { HttpServerRequest req = routingContext.request(); req.bodyHandler(buffer -> { routingContext.response().end(Json.encode(jug11)); }); }); server.requestHandler(router::accept).listen(8080); } } public class Server extends AbstractVerticle { @Override public void start() { HttpServer server = vertx.createHttpServer(); Router router = Router.router(vertx); router.route(HttpMethod.GET, "/jug11").handler(routingContext -> { HttpServerRequest req = routingContext.request(); req.bodyHandler(buffer -> { routingContext.response().end(Json.encode(jug11)); }); }); server.requestHandler(router::accept).listen(8080); } }
  82. public class Server extends AbstractVerticle { @Override public void start()

    { HttpServer server = vertx.createHttpServer(); Router router = Router.router(vertx); router.route(HttpMethod.GET, "/jug11").handler(routingContext -> { HttpServerRequest req = routingContext.request(); req.bodyHandler(buffer -> { routingContext.response().end(Json.encode(jug11)); }); }); server.requestHandler(router::accept).listen(8080); } } 29 октября 2019 Vert.X vs. Spring +24 Server.java public class Server extends AbstractVerticle { @Override public void start() { HttpServer server = vertx.createHttpServer(); Router router = Router.router(vertx); router.route(HttpMethod.GET, "/jug11").handler(routingContext -> { HttpServerRequest req = routingContext.request(); req.bodyHandler(buffer -> { routingContext.response().end(Json.encode(jug11)); }); }); server.requestHandler(router::accept).listen(8080); } } public class Server extends AbstractVerticle { @Override public void start() { HttpServer server = vertx.createHttpServer(); Router router = Router.router(vertx); router.route(HttpMethod.GET, "/jug11").handler(routingContext -> { HttpServerRequest req = routingContext.request(); req.bodyHandler(buffer -> { routingContext.response().end(Json.encode(jug11)); }); }); server.requestHandler(router::accept).listen(8080); } } public class Server extends AbstractVerticle { @Override public void start() { HttpServer server = vertx.createHttpServer(); Router router = Router.router(vertx); router.route(HttpMethod.GET, "/jug11").handler(routingContext -> { HttpServerRequest req = routingContext.request(); req.bodyHandler(buffer -> { routingContext.response().end(Json.encode(jug11)); }); }); server.requestHandler(router::accept).listen(8080); } } public class Server extends AbstractVerticle { @Override public void start() { HttpServer server = vertx.createHttpServer(); Router router = Router.router(vertx); router.route(HttpMethod.GET, "/jug11").handler(routingContext -> { HttpServerRequest req = routingContext.request(); req.bodyHandler(buffer -> { routingContext.response().end(Json.encode(jug11)); }); }); server.requestHandler(router::accept).listen(8080); } }
  83. public class Server extends AbstractVerticle { @Override public void start()

    { HttpServer server = vertx.createHttpServer(); Router router = Router.router(vertx); router.route(HttpMethod.GET, "/jug11").handler(routingContext -> { HttpServerRequest req = routingContext.request(); req.bodyHandler(buffer -> { routingContext.response().end(Json.encode(jug11)); }); }); server.requestHandler(router::accept).listen(8080); } } 29 октября 2019 Vert.X vs. Spring +24 Server.java public class Server extends AbstractVerticle { @Override public void start() { HttpServer server = vertx.createHttpServer(); Router router = Router.router(vertx); router.route(HttpMethod.GET, "/jug11").handler(routingContext -> { HttpServerRequest req = routingContext.request(); req.bodyHandler(buffer -> { routingContext.response().end(Json.encode(jug11)); }); }); server.requestHandler(router::accept).listen(8080); } } public class Server extends AbstractVerticle { @Override public void start() { HttpServer server = vertx.createHttpServer(); Router router = Router.router(vertx); router.route(HttpMethod.GET, "/jug11").handler(routingContext -> { HttpServerRequest req = routingContext.request(); req.bodyHandler(buffer -> { routingContext.response().end(Json.encode(jug11)); }); }); server.requestHandler(router::accept).listen(8080); } } public class Server extends AbstractVerticle { @Override public void start() { HttpServer server = vertx.createHttpServer(); Router router = Router.router(vertx); router.route(HttpMethod.GET, "/jug11").handler(routingContext -> { HttpServerRequest req = routingContext.request(); req.bodyHandler(buffer -> { routingContext.response().end(Json.encode(jug11)); }); }); server.requestHandler(router::accept).listen(8080); } } public class Server extends AbstractVerticle { @Override public void start() { HttpServer server = vertx.createHttpServer(); Router router = Router.router(vertx); router.route(HttpMethod.GET, "/jug11").handler(routingContext -> { HttpServerRequest req = routingContext.request(); req.bodyHandler(buffer -> { routingContext.response().end(Json.encode(jug11)); }); }); server.requestHandler(router::accept).listen(8080); } } public class Server extends AbstractVerticle { @Override public void start() { HttpServer server = vertx.createHttpServer(); Router router = Router.router(vertx); router.route(HttpMethod.GET, "/jug11").handler(routingContext -> { HttpServerRequest req = routingContext.request(); req.bodyHandler(buffer -> { routingContext.response().end(Json.encode(jug11)); }); }); server.requestHandler(router::accept).listen(8080); } }
  84. public class Server extends AbstractVerticle { @Override public void start()

    { HttpServer server = vertx.createHttpServer(); Router router = Router.router(vertx); router.route(HttpMethod.GET, "/jug11").handler(routingContext -> { HttpServerRequest req = routingContext.request(); req.bodyHandler(buffer -> { routingContext.response().end(Json.encode(jug11)); }); }); server.requestHandler(router::accept).listen(8080); } } 29 октября 2019 Vert.X vs. Spring +24 Server.java public class Server extends AbstractVerticle { @Override public void start() { HttpServer server = vertx.createHttpServer(); Router router = Router.router(vertx); router.route(HttpMethod.GET, "/jug11").handler(routingContext -> { HttpServerRequest req = routingContext.request(); req.bodyHandler(buffer -> { routingContext.response().end(Json.encode(jug11)); }); }); server.requestHandler(router::accept).listen(8080); } } public class Server extends AbstractVerticle { @Override public void start() { HttpServer server = vertx.createHttpServer(); Router router = Router.router(vertx); router.route(HttpMethod.GET, "/jug11").handler(routingContext -> { HttpServerRequest req = routingContext.request(); req.bodyHandler(buffer -> { routingContext.response().end(Json.encode(jug11)); }); }); server.requestHandler(router::accept).listen(8080); } } public class Server extends AbstractVerticle { @Override public void start() { HttpServer server = vertx.createHttpServer(); Router router = Router.router(vertx); router.route(HttpMethod.GET, "/jug11").handler(routingContext -> { HttpServerRequest req = routingContext.request(); req.bodyHandler(buffer -> { routingContext.response().end(Json.encode(jug11)); }); }); server.requestHandler(router::accept).listen(8080); } } public class Server extends AbstractVerticle { @Override public void start() { HttpServer server = vertx.createHttpServer(); Router router = Router.router(vertx); router.route(HttpMethod.GET, "/jug11").handler(routingContext -> { HttpServerRequest req = routingContext.request(); req.bodyHandler(buffer -> { routingContext.response().end(Json.encode(jug11)); }); }); server.requestHandler(router::accept).listen(8080); } } public class Server extends AbstractVerticle { @Override public void start() { HttpServer server = vertx.createHttpServer(); Router router = Router.router(vertx); router.route(HttpMethod.GET, "/jug11").handler(routingContext -> { HttpServerRequest req = routingContext.request(); req.bodyHandler(buffer -> { routingContext.response().end(Json.encode(jug11)); }); }); server.requestHandler(router::accept).listen(8080); } } public class Server extends AbstractVerticle { @Override public void start() { HttpServer server = vertx.createHttpServer(); Router router = Router.router(vertx); router.route(HttpMethod.GET, "/jug11").handler(routingContext -> { HttpServerRequest req = routingContext.request(); req.bodyHandler(buffer -> { routingContext.response().end(Json.encode(jug11)); }); }); server.requestHandler(router::accept).listen(8080); } }
  85. public class Server extends AbstractVerticle { @Override public void start()

    { HttpServer server = vertx.createHttpServer(); Router router = Router.router(vertx); router.route(HttpMethod.GET, "/jug11").handler(routingContext -> { HttpServerRequest req = routingContext.request(); req.bodyHandler(buffer -> { routingContext.response().end(Json.encode(jug11)); }); }); server.requestHandler(router::accept).listen(8080); } } 29 октября 2019 Vert.X vs. Spring +24 Server.java public class Server extends AbstractVerticle { @Override public void start() { HttpServer server = vertx.createHttpServer(); Router router = Router.router(vertx); router.route(HttpMethod.GET, "/jug11").handler(routingContext -> { HttpServerRequest req = routingContext.request(); req.bodyHandler(buffer -> { routingContext.response().end(Json.encode(jug11)); }); }); server.requestHandler(router::accept).listen(8080); } } public class Server extends AbstractVerticle { @Override public void start() { HttpServer server = vertx.createHttpServer(); Router router = Router.router(vertx); router.route(HttpMethod.GET, "/jug11").handler(routingContext -> { HttpServerRequest req = routingContext.request(); req.bodyHandler(buffer -> { routingContext.response().end(Json.encode(jug11)); }); }); server.requestHandler(router::accept).listen(8080); } } public class Server extends AbstractVerticle { @Override public void start() { HttpServer server = vertx.createHttpServer(); Router router = Router.router(vertx); router.route(HttpMethod.GET, "/jug11").handler(routingContext -> { HttpServerRequest req = routingContext.request(); req.bodyHandler(buffer -> { routingContext.response().end(Json.encode(jug11)); }); }); server.requestHandler(router::accept).listen(8080); } } public class Server extends AbstractVerticle { @Override public void start() { HttpServer server = vertx.createHttpServer(); Router router = Router.router(vertx); router.route(HttpMethod.GET, "/jug11").handler(routingContext -> { HttpServerRequest req = routingContext.request(); req.bodyHandler(buffer -> { routingContext.response().end(Json.encode(jug11)); }); }); server.requestHandler(router::accept).listen(8080); } } public class Server extends AbstractVerticle { @Override public void start() { HttpServer server = vertx.createHttpServer(); Router router = Router.router(vertx); router.route(HttpMethod.GET, "/jug11").handler(routingContext -> { HttpServerRequest req = routingContext.request(); req.bodyHandler(buffer -> { routingContext.response().end(Json.encode(jug11)); }); }); server.requestHandler(router::accept).listen(8080); } } public class Server extends AbstractVerticle { @Override public void start() { HttpServer server = vertx.createHttpServer(); Router router = Router.router(vertx); router.route(HttpMethod.GET, "/jug11").handler(routingContext -> { HttpServerRequest req = routingContext.request(); req.bodyHandler(buffer -> { routingContext.response().end(Json.encode(jug11)); }); }); server.requestHandler(router::accept).listen(8080); } } public class Server extends AbstractVerticle { @Override public void start() { HttpServer server = vertx.createHttpServer(); Router router = Router.router(vertx); router.route(HttpMethod.GET, "/jug11").handler(routingContext -> { HttpServerRequest req = routingContext.request(); req.bodyHandler(buffer -> { routingContext.response().end(Json.encode(jug11)); }); }); server.requestHandler(router::accept).listen(8080); } }
  86. 29 октября 2019 Vert.X vs. Spring. Тестирование +25

  87. 29 октября 2019 Vert.X vs. Spring. Тестирование +25 100 одновременных

    пользователей 50 000 запросов
  88. 29 октября 2019 Vert.X vs. Spring. Тестирование +25 100 одновременных

    пользователей 50 000 запросов OS : macOS Mojave CPU : Intel Core i5 @ 3.3GHz Memory : 8GB 2133 MHz LPDDR3
  89. 29 октября 2019 Vert.X vs. Spring. Тестирование +26 summary =

    50000 in 00:00:09 = 5339.6/s
  90. 29 октября 2019 Vert.X vs. Spring. Тестирование +26 summary =

    50000 in 00:00:09 = 5339.6/s summary = 50000 in 00:00:12 = 4020.3/s
  91. 29 октября 2019 Vert.X & Spring. Интеграция +27

  92. 29 октября 2019 Vert.X & Spring. Интеграция +27 @Override public

    void start() throws Exception { super.start(); Router router = Router.router(vertx); router.get("/api/user") .handler(this::getAllArticlesHandler); vertx.createHttpServer() .requestHandler(router::accept) .listen(config().getInteger("http.port", 8080)); }
  93. 29 октября 2019 Vert.X & Spring. Интеграция +27 @Override public

    void start() throws Exception { super.start(); Router router = Router.router(vertx); router.get("/api/user") .handler(this::getAllArticlesHandler); vertx.createHttpServer() .requestHandler(router::accept) .listen(config().getInteger("http.port", 8080)); } @Override public void start() throws Exception { super.start(); Router router = Router.router(vertx); router.get("/api/user") .handler(this::getAllArticlesHandler); vertx.createHttpServer() .requestHandler(router::accept) .listen(config().getInteger("http.port", 8080)); }
  94. 29 октября 2019 Vert.X & Spring. Интеграция +27 @Override public

    void start() throws Exception { super.start(); Router router = Router.router(vertx); router.get("/api/user") .handler(this::getAllArticlesHandler); vertx.createHttpServer() .requestHandler(router::accept) .listen(config().getInteger("http.port", 8080)); } @Override public void start() throws Exception { super.start(); Router router = Router.router(vertx); router.get("/api/user") .handler(this::getAllArticlesHandler); vertx.createHttpServer() .requestHandler(router::accept) .listen(config().getInteger("http.port", 8080)); } @Override public void start() throws Exception { super.start(); Router router = Router.router(vertx); router.get("/api/user") .handler(this::getAllArticlesHandler); vertx.createHttpServer() .requestHandler(router::accept) .listen(config().getInteger("http.port", 8080)); }
  95. 29 октября 2019 Vert.X & Spring. Интеграция +27 @Override public

    void start() throws Exception { super.start(); Router router = Router.router(vertx); router.get("/api/user") .handler(this::getAllArticlesHandler); vertx.createHttpServer() .requestHandler(router::accept) .listen(config().getInteger("http.port", 8080)); } @Override public void start() throws Exception { super.start(); Router router = Router.router(vertx); router.get("/api/user") .handler(this::getAllArticlesHandler); vertx.createHttpServer() .requestHandler(router::accept) .listen(config().getInteger("http.port", 8080)); } @Override public void start() throws Exception { super.start(); Router router = Router.router(vertx); router.get("/api/user") .handler(this::getAllArticlesHandler); vertx.createHttpServer() .requestHandler(router::accept) .listen(config().getInteger("http.port", 8080)); } @Override public void start() throws Exception { super.start(); Router router = Router.router(vertx); router.get("/api/user") .handler(this::getAllArticlesHandler); vertx.createHttpServer() .requestHandler(router::accept) .listen(config().getInteger("http.port", 8080)); }
  96. 29 октября 2019 Vert.X & Spring. Интеграция +27 @Override public

    void start() throws Exception { super.start(); Router router = Router.router(vertx); router.get("/api/user") .handler(this::getAllArticlesHandler); vertx.createHttpServer() .requestHandler(router::accept) .listen(config().getInteger("http.port", 8080)); } @Override public void start() throws Exception { super.start(); Router router = Router.router(vertx); router.get("/api/user") .handler(this::getAllArticlesHandler); vertx.createHttpServer() .requestHandler(router::accept) .listen(config().getInteger("http.port", 8080)); } @Override public void start() throws Exception { super.start(); Router router = Router.router(vertx); router.get("/api/user") .handler(this::getAllArticlesHandler); vertx.createHttpServer() .requestHandler(router::accept) .listen(config().getInteger("http.port", 8080)); } @Override public void start() throws Exception { super.start(); Router router = Router.router(vertx); router.get("/api/user") .handler(this::getAllArticlesHandler); vertx.createHttpServer() .requestHandler(router::accept) .listen(config().getInteger("http.port", 8080)); } @Override public void start() throws Exception { super.start(); Router router = Router.router(vertx); router.get("/api/user") .handler(this::getAllArticlesHandler); vertx.createHttpServer() .requestHandler(router::accept) .listen(config().getInteger("http.port", 8080)); }
  97. 29 октября 2019 Vert.X & Spring. Интеграция +27 @Override public

    void start() throws Exception { super.start(); Router router = Router.router(vertx); router.get("/api/user") .handler(this::getAllArticlesHandler); vertx.createHttpServer() .requestHandler(router::accept) .listen(config().getInteger("http.port", 8080)); } @Override public void start() throws Exception { super.start(); Router router = Router.router(vertx); router.get("/api/user") .handler(this::getAllArticlesHandler); vertx.createHttpServer() .requestHandler(router::accept) .listen(config().getInteger("http.port", 8080)); } @Override public void start() throws Exception { super.start(); Router router = Router.router(vertx); router.get("/api/user") .handler(this::getAllArticlesHandler); vertx.createHttpServer() .requestHandler(router::accept) .listen(config().getInteger("http.port", 8080)); } @Override public void start() throws Exception { super.start(); Router router = Router.router(vertx); router.get("/api/user") .handler(this::getAllArticlesHandler); vertx.createHttpServer() .requestHandler(router::accept) .listen(config().getInteger("http.port", 8080)); } @Override public void start() throws Exception { super.start(); Router router = Router.router(vertx); router.get("/api/user") .handler(this::getAllArticlesHandler); vertx.createHttpServer() .requestHandler(router::accept) .listen(config().getInteger("http.port", 8080)); } @Override public void start() throws Exception { super.start(); Router router = Router.router(vertx); router.get("/api/user") .handler(this::getAllArticlesHandler); vertx.createHttpServer() .requestHandler(router::accept) .listen(config().getInteger("http.port", 8080)); }
  98. 29 октября 2019 Vert.X. Книги +28

  99. 29 октября 2019 Vert.X. Книги +28 ~весна 2020

  100. 29 октября 2019 Vert.X. Книги +28 ~весна 2020 https://vertx.io/docs/guide-for-java-devs/

  101. 29 октября 2019 Vert.X. Книги +28 ~весна 2020 https://vertx.io/docs/guide-for-java-devs/ https://developers.redhat.com

  102. 29 октября 2019 +29 Спасибо за внимание! Борис Бочкарев Tg:

    @BorisBochkarev GitHub: BorisBochkaryov e-Mail: Boris-Bochkaryov@yandex.ru