list-timelineKafka/AutoMQ

その KafkaEventStore 提供します 分散ストリーミングイベントストア socketio4j 用の Apache Kafka。 これにより 水平スケーリング イベントをすべてのサーバーインスタンス間でブロードキャストして、イベントメッセージ、ルームへの参加や退出、その他の内部イベントをノード間で同期できます。

主な特徴

  • 分散および耐障害性 — イベントは Kafka に永続化され、すべてのアクティブなノードに配信されます

  • 非同期かつノンブロッキングな公開 — Netty のイベントループのブロックを回避します

  • イベントリプレイの境界 — 消費を開始するのは 最新 メッセージのみ(履歴のリプレイは行いません)

  • ストリーミングブロードキャストのセマンティクス — 各ノードは すべてのイベントを受け取り、ロードバランスされたメッセージではありません

  • 重複防止 — 同じノードから発生したイベントはスキップします(nodeId フィルタリング)

動作方法

  • 各パブリッシュはイベントを Kafka トピックに保存します(モードに応じて単一またはタイプごと)

  • サブスクライブされた各イベントタイプは専用のデーモンスレッドでポーリングされます

  • メッセージはローカルのリスナーにのみ配信されます、もしそれらが 別のノードから来た場合

  • 破損した(“毒入り”)レコードはスキップされ、消費を継続します

モード

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

MULTI_CHANNEL

各イベントタイプがそれぞれの Kafka トピックを持ちます

デフォルト;並列性と分離が必要な場合

SINGLE_CHANNEL

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

すべてのイベントタイプ間でグローバルな順序付けが必要な場合

利点

  • 👍 マルチノード展開で動作します

  • 👍 socketio4j のイベントをサーバー間で同期します

  • 👍 安全なシャットダウンとリスナーのクリーンアップ

  • 👍 Netty スレッドに対するバックプレッシャーはゼロ

制限事項

  • ℹ️ ポイントツーポイントのキューではありません — 常にブロードキャスト方式です

  • ℹ️ 履歴のリプレイはありません — 常に最新のオフセットからのみ消費します

  • ℹ️ Kafka クラスターの可用性が必要です

配信保証: 少なくとも一度配信のセマンティクス — 重複配信が発生する可能性があります;リスナーは冪等であるべきです。

最終更新

役に立ちましたか?