nNATS 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

  • publish0 sérialise l'événement et l'envoie à un sujet NATS

  • subscribe0 enregistre 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

Mode
Comportement
Quand l'utiliser

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 ?