hHazelcast Pub/Sub

その HazelcastPubSubEventStore は、socketio4j の分散イベントストアを提供します(使用技術: Hazelcast ITopic)。 クラスタノード間でイベントをブロードキャストすることで水平スケーリングを可能にし、ルームの参加・退出、状態変化、ACK、およびその他の内部イベントを複数のサーバーインスタンス間で同期します。

主な特徴

  • 分散イベントブロードキャスト — すべてのノードが公開されたすべてのイベントを受信します

  • 非同期ノンブロッキング配信 — Hazelcast が Netty のイベントループ外で配信を管理します

  • イベントごとのトピック対応 — イベント種別ごとのマルチチャネル分離を可能にします

  • シンプルな統合 — リングバッファの設定なしでコアな Hazelcast 機能を使用します

  • 重複防止 — 同一ノード発のイベントは nodeId フィルタリング

仕組み

  • イベントは Hazelcast ITopic インスタンス(モードにより1つまたは複数)に公開されます

  • 各サブスクライブされたサーバーはイベント配信のために Hazelcast メッセージリスナを登録します

  • ローカルリスナは外部発信のイベントのみを受け取ります(nodeId 不一致)

  • リスナ登録はイベント種別ごとに追跡され、制御された購読解除とシャットダウンを可能にします

モード

モード
動作
使用するタイミング

MULTI_CHANNEL

各イベント種別はそれぞれの Hazelcast トピックにマップされます

デフォルト;イベントトラフィックを分離します

SINGLE_CHANNEL

すべてのイベントがルーティングされます ALL_SINGLE_CHANNEL

異なる種別間で順序を保ちたい場合

利点

👍 マルチノード構成で動作します 👍 Hazelcast をクラスタリングに既に使用している場合は追加のブローカー不要 👍 設定と統合が簡単 👍 クリーンな購読解除とシャットダウン処理 👍 分散状態に Hazelcast を既に使用しているアプリケーションに最適

制限事項

ℹ️ Hazelcast トピックのバッファリング以外にメッセージ永続化はない — 再起動時にメッセージが失われる可能性があります ℹ️ 順序はトピック単位であり、すべてのイベント種別を通したグローバルな順序ではありません ℹ️ 履歴の再生はなし — リスナは購読後のメッセージのみ受け取ります ℹ️ フェイルオーバー時に重複配信が発生する可能性があります

配信保証: 少なくとも一度配信のセマンティクス — イベントリスナは重複メッセージを安全に処理するために冪等である必要があります。

最終更新

役に立ちましたか?