Magasin d'événements
Le EventStore interface définit la couche de synchronisation d'événements distribués de socketio4j. Elle fournit une abstraction unifiée pour publier et s'abonner aux événements internes — tels que les jonctions/les départs de salles, les accusés de réception, les changements de session et la synchronisation entre nœuds — sur une ou plusieurs instances de serveur.
Caractéristiques principales
API d'événements unifiée — même modèle publication/abonnement pour tous les backends
Distribution typée — les écouteurs reçoivent des
EventMessageobjetsFiltrage conscient du nœud — les implémentations ignorent généralement les événements d'origine locale via
nodeIdTransports modulables — Kafka, Redis Streams, Hazelcast, NATS, repli en mémoire, etc.
Contrôle du cycle de vie — standardisé
publier,s'abonner,se désabonner,arrêt
Comment ça marche
publier→ envoi spécifique au backend viapublish0s'abonner→ enregistrer un écouteur d'événements viasubscribe0se désabonner→ supprimer l'écouteur et nettoyer viaunsubscribe0arrêt→ libérer les ressources du backend viashutdown0Les implémentations fournissent le comportement de transport via les
*0méthodes ; l'interface standardise le flux et la gestion des erreurs
Propriétés de routage d'événements
EventStoreMode
MULTI_CHANNEL (flux/sujets par événement) ou SINGLE_CHANNEL (canal unifié)
EventStoreType
Déclare la famille de transport : STREAM, PUBSUB, LOCAL, etc.
PublishMode
Décrit la fiabilité attendue : RELIABLE ou UNRELIABLE
nodeId
Identifie le nœud ; utilisé pour éviter de retraiter les événements locaux
Remarque :
getNodeId()fournit un ID aléatoire par défaut. Pour les déploiements distribués, configurez une identité de nœud stable viaStoreFactory.
Avantages
👍 Changer les transports distribués sans modifier le code 👍 Journalisation centralisée des erreurs et sémantique de flux 👍 Points d'extension clairs pour les backends personnalisés 👍 Abstrait les différences de transport
Limitations
ℹ️ Les garanties de livraison dépendent de l'implémentation — non imposées par l'interface
ℹ️ La persistance, l'ordonnancement et la déduplication sont des responsabilités du backend
ℹ️ nodeIdLe filtrage local basé sur - doit être respecté pour éviter les doublons
Garanties de livraison
Le L'interface EventStore ne définit pas de garanties de livraison. La fiabilité, la relecture et l'ordonnancement dépendent entièrement du backend choisi (par ex. Redis Streams = au moins une fois ; Redis Pub/Sub = meilleur effort ; Kafka = au moins une fois ; Mémoire = local uniquement).
Mis à jour
Ce contenu vous a-t-il été utile ?