Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
非同期ツールキット「Vert.x」のご紹介
Search
Masatoshi Itoh
November 18, 2023
Programming
410
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
非同期ツールキット「Vert.x」のご紹介
JavaDoでしょう#23 Java21リリース記念イベント@札幌 で使用したLT資料です。
Vert.xの「非同期」以外のおすすめポイントを紹介します!
Masatoshi Itoh
November 18, 2023
More Decks by Masatoshi Itoh
See All by Masatoshi Itoh
Hello - 本を書く- World !!
masatoshiitoh
0
110
TPI NEXTを読みました
masatoshiitoh
0
260
サーバーサイド開発にありがたい GitHub Copilot / ChatGPT
masatoshiitoh
1
1.1k
コードを書いたら負けなのか?
masatoshiitoh
0
490
1999年 最新バックアップ事情
masatoshiitoh
0
220
Google I/O 報告 (Google Assistant)
masatoshiitoh
0
510
GDC報告会資料 海外に見る「生産性改善」動向
masatoshiitoh
0
1.3k
イケメンシリーズでのORMとスロークエリ対策について
masatoshiitoh
0
2.7k
Erlangご紹介 websocket編
masatoshiitoh
0
2.9k
Other Decks in Programming
See All in Programming
Oxcを導入して開発体験が向上した話
yug1224
4
310
そのテスト、説明できますか?~LWテスト戦略FW~のご紹介
nakahara
0
110
ふつうのFeature Flag実践入門
irof
7
3.8k
AI時代の仕事技芸論 — ソフトウェア開発で「遊ぶように働く」職人的熟達のすすめ
kuranuki
2
670
「なぜそう決めたのか」を残し続ける仕組み ― Notion AI カスタムエージェント × Slack連携による設計判断の自動記録 - NIKKEI Tech Talk #47
niftycorp
PRO
0
160
過去最大のMCPアップデート! 2026-07-28 RC版の謎に迫る
licux
6
280
TSKaigi Night Talks 2026_TypeScriptでサプライチェーンの整合性を型に閉じ込める
geekplus_tech
0
340
Java × distroless で 軽量なコンテナイメージを / Java on Distroless
contour_gara
0
540
Go1.27で導入されるジェネリクスメソッドでできること
mackee
0
120
メソッドのジェネリクスでGoの夢は広がるか? / Kyoto.go #65
utgwkk
3
740
Spring Security 実践 ─ GraphQL APIで実務に役立つ 認証・認可 を学ぶ
wagyu
0
230
Creating Composable Callables in Contemporary C++
rollbear
0
120
Featured
See All Featured
Mind Mapping
helmedeiros
PRO
1
250
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
470
First, design no harm
axbom
PRO
2
1.2k
Done Done
chrislema
186
16k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.4k
Evolving SEO for Evolving Search Engines
ryanjones
0
220
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
2
1.5k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.5k
Skip the Path - Find Your Career Trail
mkilby
1
150
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
860
Transcript
非同期ツールキット 「Vert.x」のご紹介 2023/11/18 JavaDoでしょう#23 Java21リリース記念イベント@札幌 @masatoshiitoh (twitter/X)
自己紹介 いとうまさとし(Twitter: @masatoshiitoh) 株式会社セガ札幌スタジオ 今回の発表はセガサミーグループの技術スタックや開発・運 営中のタイトルとは全く関係ありません
過去作品 Speed.rbbtoday.com(IRI-CT、現イード在籍当時に開発) 最近のGist Camel から Camel Vert.x component 経由でVert.xクラス タのイベントバスを読み書きする とにかくApache Camelを動かしてみるための最初の手順
今回は Vert.xが楽しい、というお話をします
今回は Vert.xが楽しい、というお話をします 非同期の話はしません(え 今回の発表はセガサミーグループの技術スタックや開発・運 営中のタイトルとは全く関係ありません
Vert.x について 1. Vert.x は、 Eclipse Foundation のプロジェクトのひとつ 2. JVM
(Java Virtual Machine) で動作します 3. 非同期プログラミングをサポートするツールキットです
Vert.x について 非同期アプリケーションの何がうれしいか? 1. OSスレッドを節約できる 2. CPUリソースを比較的有効に使える … このあたりはグリーンスレッドで解消!(しょんぼり
PROS v.s. CONS Pros 1. アプリケーション内のサブプロセス的に使えるVerticleが便利 2. イベントバス経由のメッセージ交換が便利 3. アプリケーションレベルのクラスタが組みやすい
Cons 1. Spring Boot+グリーンスレッドが、ほとんどのケースで楽
Verticleとは Vert.xアプリケーションの内部で動作する、アクターモデル のように利用できるクラスです AbstractVerticleを継承します Verticle用途例 ひとかたまりの機能を担当(例:ウェブサーバー機能)
イベントバスとだけやりとりして動作するアクター “Character.player.123456” “Character.npc.shop01”
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());
イベントバス とは Vert.x上で使用できるメッセージング機構です データの送受信モデルとして、どちらも使用可能です Publish – Consume
Publish – Subscribe 送受信のキーは文字列で指定可能です
イベントバス とは 送信側: 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!"); });
クラスタを 組む、とは Vert.xは、Vert.x同士のクラスタを構築してHA環境を実現 できます HazelcastやZookeeper、Apache Igniteなどを使ってクラ スタマネージャを実現しています
クラスタ内はイベントバスを使ってメッセージングできるほ か、Key-Valueストア、ロック、カウンターがクラスタマ ネージャによって提供されます
クラスタを 組む、とは クラスタマネージャーの追加(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> :
クラスタを 組む、とは Hazelcast クラスタマネージャであれば、同じサブネット上 で起動すれば自動でつながる 外部連携、たとえばCamelのVert.xコンポーネントも、クラ スタ経由で接続するみたい(調査資料↓) Camel
から Camel Vert.x component 経由でVert.xクラ スタのイベントバスを読み書きする (github.com) https://gist.github.com/masatoshiitoh/9aeb0e00a3e177f080cff4a0130a576b
というわけで Vert.xって楽しそうかも? と思っていただけたら幸いです
ご清聴 ありがとう ございました (セガ札幌スタジオ、中途採用絶賛おこなってます)