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

非同期ツールキット「Vert.x」のご紹介

 非同期ツールキット「Vert.x」のご紹介

JavaDoでしょう#23 Java21リリース記念イベント@札幌 で使用したLT資料です。
Vert.xの「非同期」以外のおすすめポイントを紹介します!

Masatoshi Itoh

November 18, 2023
Tweet

More Decks by Masatoshi Itoh

Other Decks in Programming

Transcript

  1. 自己紹介  いとうまさとし(Twitter: @masatoshiitoh)  株式会社セガ札幌スタジオ  今回の発表はセガサミーグループの技術スタックや開発・運 営中のタイトルとは全く関係ありません 

    過去作品  Speed.rbbtoday.com(IRI-CT、現イード在籍当時に開発)  最近のGist  Camel から Camel Vert.x component 経由でVert.xクラス タのイベントバスを読み書きする  とにかくApache Camelを動かしてみるための最初の手順
  2. Vert.x について 1. Vert.x は、 Eclipse Foundation のプロジェクトのひとつ 2. JVM

    (Java Virtual Machine) で動作します 3. 非同期プログラミングをサポートするツールキットです
  3. Verticleとは 定義: public class QueryApiVerticle extends AbstractVerticle { @Override public

    void start() throws Exception { vertx.eventBus().consumer("query", message -> { System.out.println(“MSG:" + message.body()); message.reply("Query received!"); }); } 起動: vertx.deployVerticle(new QueryApiVerticle());
  4. イベントバス とは 送信側: vertx.eventBus().request("query", params, reply -> { if (reply.succeeded())

    { routingContext.response() .putHeader("content-type", "text/plain") .end((String) reply.result().body()); } else { routingContext.response() .putHeader("content-type", "text/plain") .end("Failed to send query!"); } }); 受信側: vertx.eventBus().consumer("query", message -> { System.out.println(“MSG:" + message.body()); message.reply("Query received!"); });
  5. クラスタを 組む、とは  Vert.xは、Vert.x同士のクラスタを構築してHA環境を実現 できます  HazelcastやZookeeper、Apache Igniteなどを使ってクラ スタマネージャを実現しています 

    クラスタ内はイベントバスを使ってメッセージングできるほ か、Key-Valueストア、ロック、カウンターがクラスタマ ネージャによって提供されます
  6. クラスタを 組む、とは クラスタマネージャーの追加(pom.xml): <dependency> <groupId>io.vertx</groupId> <artifactId>vertx-hazelcast</artifactId> <version>4.4.0</version> </dependency> クラスタを有効にする(pom.xml): <plugin>

    <artifactId>exec-maven-plugin</artifactId> : <configuration> <mainClass>io.vertx.core.Launcher</mainClass> <arguments> <argument>run</argument> <argument>${main.verticle}</argument> <argument>-cluster</argument> :