Redis Pub/Sub
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)セマンティクス。 ベストエフォートの一時的な配信 — リスナーはメッセージの欠落や順序が入れ替わることを許容する必要があります。
最終更新
役に立ちましたか?