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
0
380
非同期ツールキット「Vert.x」のご紹介
JavaDoでしょう#23 Java21リリース記念イベント@札幌 で使用したLT資料です。
Vert.xの「非同期」以外のおすすめポイントを紹介します!
Masatoshi Itoh
November 18, 2023
Tweet
Share
More Decks by Masatoshi Itoh
See All by Masatoshi Itoh
Hello - 本を書く- World !!
masatoshiitoh
0
91
TPI NEXTを読みました
masatoshiitoh
0
230
サーバーサイド開発にありがたい GitHub Copilot / ChatGPT
masatoshiitoh
1
1k
コードを書いたら負けなのか?
masatoshiitoh
0
470
1999年 最新バックアップ事情
masatoshiitoh
0
210
Google I/O 報告 (Google Assistant)
masatoshiitoh
0
490
GDC報告会資料 海外に見る「生産性改善」動向
masatoshiitoh
0
1.3k
イケメンシリーズでのORMとスロークエリ対策について
masatoshiitoh
0
2.7k
Erlangご紹介 websocket編
masatoshiitoh
0
2.9k
Other Decks in Programming
See All in Programming
Claude Codeの「Compacting Conversation」を体感50%減! CLAUDE.md + 8 Skills で挑むコンテキスト管理術
kmurahama
1
650
ローカルLLMを⽤いてコード補完を⾏う VSCode拡張機能を作ってみた
nearme_tech
PRO
0
180
公共交通オープンデータ × モバイルUX 複雑な運行情報を 『直感』に変換する技術
tinykitten
PRO
0
170
2年のAppleウォレットパス開発の振り返り
muno92
PRO
0
120
ゆくKotlin くるRust
exoego
1
160
0→1 フロントエンド開発 Tips🚀 #レバテックMeetup
bengo4com
0
410
生成AI時代を勝ち抜くエンジニア組織マネジメント
coconala_engineer
0
27k
The Art of Re-Architecture - Droidcon India 2025
siddroid
0
140
AI時代を生き抜く 新卒エンジニアの生きる道
coconala_engineer
1
450
AI 駆動開発ライフサイクル(AI-DLC):ソフトウェアエンジニアリングの再構築 / AI-DLC Introduction
kanamasa
11
4.2k
Spinner 軸ズレ現象を調べたらレンダリング深淵に飲まれた #レバテックMeetup
bengo4com
0
190
LLMで複雑な検索条件アセットから脱却する!! 生成的検索インタフェースの設計論
po3rin
4
990
Featured
See All Featured
Claude Code のすすめ
schroneko
67
210k
HDC tutorial
michielstock
1
280
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.1k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
231
22k
How GitHub (no longer) Works
holman
316
140k
Technical Leadership for Architectural Decision Making
baasie
0
190
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
5k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
For a Future-Friendly Web
brad_frost
180
10k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
1.7k
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
1
590
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って楽しそうかも? と思っていただけたら幸いです
ご清聴 ありがとう ございました (セガ札幌スタジオ、中途採用絶賛おこなってます)