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
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
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
The NotImplementedError Problem in Ruby
koic
1
750
jQueryをバージョンアップする前に使いたいjQuery Migrate
matsuo_atsushi
0
430
LLMによるContent Moderationの本番運用の裏側と品質担保への挑戦
suikabar
2
630
AI 時代のソフトウェア設計の学び方
masuda220
PRO
29
12k
[2026年度第1回ORセミナー] 計画最適化ベンチャーと競技プログラミング人材
terryu16
0
260
JavaDoc 再入門
nagise
0
330
TAKTでAI駆動開発の品質を設計する
j5ik2o
6
1.2k
Lessons from Spec-Driven Development
simas
PRO
0
190
Hunting Vulnerabilities in Symfony with LLMs
vinceamstoutz
0
540
肥大化するレガシーコードに立ち向かうためのインターフェース分離と依存の逆転 / JJUG CCC 2026 Spring
hirokunimaeta
0
540
エンジニアと一緒にテストコードの設計と実装を改善した話
mototakatsu
0
160
エージェンティックRAGにAWSで入門しよう!
har1101
8
1.5k
Featured
See All Featured
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
270
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
310
Code Reviewing Like a Champion
maltzj
528
40k
GraphQLとの向き合い方2022年版
quramy
50
15k
Scaling GitHub
holman
464
140k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
201
75k
Heart Work Chapter 1 - Part 1
lfama
PRO
7
36k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
860
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
34
2.8k
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.2k
GitHub's CSS Performance
jonrohan
1033
470k
A Soul's Torment
seathinner
6
2.9k
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って楽しそうかも? と思っていただけたら幸いです
ご清聴 ありがとう ございました (セガ札幌スタジオ、中途採用絶賛おこなってます)