NATS Pub/Sub
Le NatsEventStore fournit un magasin d'événements pour socketio4j en utilisant Pub/Sub NATS Core. Il permet la synchronisation d'événements entre plusieurs instances de serveur en diffusant des messages, mais les événements sont éphémères et non persistés, ce qui le rend adapté aux déploiements légers et à faible latence lorsque la lecture durable n'est pas requise.
Caractéristiques principales
Diffusion à faible latence — NATS Core livre rapidement les messages à tous les nœuds connectés
Événements éphémères — les messages ne sont pas stockés ; les abonnés ne reçoivent les événements que lorsqu'ils sont en ligne
Asynchrone et non bloquant — les dispatchers s'exécutent en dehors des boucles d'événements Netty
Routage par sujet par événement — les types d'événements correspondent directement aux sujets
Prévention des doublons — les événements provenant du même nœud sont ignorés via
nodeId
Comment ça marche
publish0sérialise l'événement et l'envoie à un sujet NATSsubscribe0enregistre un dispatcher qui écoute le sujet concernéLes messages sont délivrés aux écouteurs uniquement s'ils proviennent d'un nœud différent
La désinscription nettoie à la fois les abonnements et les dispatchers
L'arrêt supprime tous les abonnements actifs mais n' ferme la connexion NATS partagée
Modes
MULTI_CHANNEL
Chaque type d'événement correspond à son propre sujet
Par défaut ; sujets plus petits, meilleure séparation
SINGLE_CHANNEL
Tous les événements routés vers ALL_SINGLE_CHANNEL
Lorsque l'on exige un ordre unifié à travers les types d'événements
Avantages
👍 Livraison ultra-faible latence 👍 Idéal lorsque les événements ne n' nécessitent pas de durabilité ou de relecture 👍 Très léger — dépendances et configuration minimales 👍 Convient bien lorsque NATS est déjà utilisé pour la messagerie
Limitations
ℹ️ Les événements sont non persistés — les messages manqués ne peuvent pas être rejoués ℹ️ Les abonnés doivent être connectés pour recevoir les événements ℹ️ Des doublons peuvent survenir lors de la recréation du dispatcher ou de la reconnexion ℹ️ Ne prend pas en charge les offsets de consommateur, la backpressure ou l'élagage de flux (JetStream est nécessaire pour cela et est actuellement prévu pour le développement)
Garantie de délivrance : Semantique au plus une fois. Livraison au mieux des efforts avec perte de messages possible — les écouteurs d'événements doivent tolérer des événements manquants ou hors d'ordre.
Mis à jour
Ce contenu vous a-t-il été utile ?