rRedis Pub/Sub

circle-info

SocketIO4JはRedissonクライアントを使用してRedisサーバーに接続します。ValkeyやDragonflyDBなどのRedis互換バックエンドもサポートされる場合があります。

その RedissonPubSubEventStore socketio4jのためのイベントストアを提供します Redis Pub/Sub。 Redisチャンネルを横断してメッセージをブロードキャストすることでサーバーインスタンス間の基本的なイベント転送を可能にし、分散ルーム操作や内部同期を実現します — ただし耐久性やリプレイの保証はありません。

主な特徴

  • エフェメラルなブロードキャストメッセージング — イベントは現在接続中のサブスクライバーにのみ配信されます

  • 非同期リスナーコールバック — Redis Pub/SubのディスパッチはNettyのイベントループの外で実行されます

  • 軽量なマルチノード同期 — Redisが既に存在する場合は最小限の構成で済みます

  • イベントごとのサブジェクトルーティング — イベントタイプがそのままPub/Subチャンネルにマップされます

  • 重複防止 — 同じノード発のイベントをフィルタリングします(nodeId)

仕組み

  • publish0 イベントタイプに基づいてRedis Pub/Subチャンネルにイベントを送信します

  • subscribe0 対応するチャンネルに型安全なリスナーを登録します

  • 配信は プッシュのみ — サブスクライバーはメッセージを受け取るためにオンラインである必要があります

  • サブスクライブ解除やシャットダウン時にはトピックリスナーは削除されますが、Redisクライアントは開いたままになります

モード

モード
挙動
使用する場面

MULTI_CHANNEL

各イベントがそれぞれのPub/Subチャンネルにマップされます

デフォルト;イベントのクロストークを減らします

SINGLE_CHANNEL

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

すべてのイベントタイプの完全な順序付けが必要なとき

利点

👍 設定が非常に簡単 👍 永続化オーバーヘッドゼロ — 純粋なブロードキャスト意味論 👍 Redis中心のデプロイやプロトタイプに最適 👍 基本的なマルチノード通信でそのまま動作する

制限事項

ℹ️ イベントは 永続化されません — サブスクライバーは切断中にイベントを見逃します ℹ️ リプレイ機構はありません — 再接続したノードは“現在”から開始します ℹ️ 再接続時に重複メッセージが発生する可能性があります ℹ️ 順序はチャネルごとにのみ適用されます;グローバルな順序付けには SINGLE_CHANNEL モード

配信保証: 最多一回(At-most-once)セマンティクス。 ベストエフォートの一時的な配信 — リスナーはメッセージの欠落や順序が入れ替わることを許容する必要があります。

最終更新

役に立ちましたか?