イベントストア
その EventStore interfaceはsocketio4jの分散イベント同期レイヤーを定義します。 これは、1つ以上のサーバーインスタンスにまたがるルームの参加・退出、確認応答、セッション変更、ノード間同期などの内部イベントを公開および購読するための統一された抽象を提供します。
主な特徴
統一されたイベントAPI — すべてのバックエンドで同じ公開/購読モデル
型付きディスパッチ — リスナーは強い型の
EventMessageオブジェクトを受け取るノード認識フィルタリング — 実装は通常、経由で自己発生イベントを無視します
nodeIdプラグ可能なトランスポート — Kafka、Redis Streams、Hazelcast、NATS、インメモリフォールバック等
ライフサイクル制御 — 標準化された
publish,subscribe,unsubscribe,shutdown
仕組み
publish→ 経由でのバックエンド固有の送信publish0subscribe→ 経由でイベントリスナーを登録subscribe0unsubscribe→ 経由でリスナーを削除してクリーンアップunsubscribe0shutdown→ 経由でバックエンドリソースを解放shutdown0実装は経由のメソッドを通じてトランスポートの振る舞いを提供します
*0メソッド;インターフェースはフローとエラー処理を標準化します
イベントルーティングのプロパティ
EventStoreMode
MULTI_CHANNEL (イベントごとのストリーム/トピック)または SINGLE_CHANNEL (統一チャネル)
EventStoreType
トランスポートのファミリを宣言します: STREAM, PUBSUB, LOCALなど
PublishMode
期待される信頼性を示します: RELIABLE または UNRELIABLE
nodeId
ノードを識別します;ローカルイベントの再処理を避けるために使用されます
注:
getNodeId()はデフォルトでランダムなIDを提供します。 分散デプロイでは、を構成して、 安定したノードID 経由でStoreFactory.
利点
👍 コード変更なしで分散トランスポートを切り替え可能 👍 中央集約されたエラーロギングとフローセマンティクス 👍 カスタムバックエンドのための明確な拡張フック 👍 トランスポートの違いを抽象化
制限事項
ℹ️ 配信保証は実装に依存します—インターフェースによって強制されません
ℹ️ 永続性、順序、重複排除はバックエンドの責任です
ℹ️ nodeIdベースのローカルフィルタリングは重複を避けるために尊重される必要があります
配信保証
その EventStoreインターフェースは配信保証を定義しません. 信頼性、リプレイ、および順序は選択したバックエンドに完全に依存します(例:Redis Streams = 少なくとも一度;Redis Pub/Sub = ベストエフォート;Kafka = 少なくとも一度;Memory = ローカルのみ)。
最終更新
役に立ちましたか?