Hazelcast Pub/Sub
Le HazelcastPubSubEventStore fournit un magasin d'événements distribué pour socketio4j utilisant Hazelcast ITopic. Il permet une mise à l'échelle horizontale en diffusant les événements à travers les nœuds du cluster afin que les jointures/entrées et sorties de salles, les changements d'état, les accusés de réception et autres événements internes soient synchronisés entre plusieurs instances de serveur.
Caractéristiques principales
Diffusion d'événements distribuée — tous les nœuds reçoivent tous les événements publiés
Distribution asynchrone non bloquante — Hazelcast gère la livraison en dehors des boucles d'événements Netty
Prise en charge d'un topic par type d'événement — permet la séparation multi-canaux des types d'événements
Intégration simple — utilise les fonctionnalités de base de Hazelcast sans configuration de ring buffer
Prévention des doublons — les événements provenant du même nœud sont ignorés en utilisant
nodeIdfiltrage
Comment ça marche
Les événements sont publiés dans des instances Hazelcast ITopic (une ou plusieurs selon le mode)
Chaque serveur abonné enregistre des listeners de messages Hazelcast pour la livraison des événements
Les listeners locaux ne reçoivent que les événements d'origine externe (
nodeIddécalage)Les enregistrements de listeners sont suivis par type d'événement pour permettre un désabonnement et un arrêt contrôlés
Modes
MULTI_CHANNEL
Chaque type d'événement correspond à son propre topic Hazelcast
Par défaut ; isole le trafic d'événements
SINGLE_CHANNEL
Tous les événements routés vers ALL_SINGLE_CHANNEL
Lorsque l'ordonnancement entre types est souhaité
Avantages
👍 Fonctionne dans des déploiements multi-nœuds 👍 Aucun broker supplémentaire requis si Hazelcast est déjà utilisé pour le clustering 👍 Facile à configurer et à intégrer 👍 Gestion propre du désabonnement et de l'arrêt 👍 Idéal pour les applications utilisant déjà Hazelcast pour l'état distribué
Limitations
ℹ️ Aucune persistance des messages au-delà du buffering du topic Hazelcast — les messages peuvent être perdus au redémarrage ℹ️ L'ordonnancement est par topic, pas global à tous les types d'événements ℹ️ Pas de rejouage historique — les listeners ne reçoivent que les messages après l'abonnement ℹ️ Livraison en double possible lors d'événements de basculement
Garantie de délivrance : Semantique au moins une fois — les listeners d'événements doivent être idempotents pour gérer en toute sécurité les messages dupliqués.
Mis à jour
Ce contenu vous a-t-il été utile ?