Kafka/AutoMQ
Le KafkaEventStore fournit un magasin d'événements distribué et en streaming pour socketio4j utilisant Apache Kafka. Il permet mise à l'échelle horizontale en diffusant des événements sur toutes les instances de serveur afin que les messages d'événements, les joins/parties de salles et autres événements internes soient synchronisés entre les nœuds.
Principales caractéristiques
Distribué et tolérant aux pannes — les événements sont persistés dans Kafka et livrés à chaque nœud actif
Publication asynchrone et non bloquante — évite de bloquer les boucles d'événements Netty
Bornes de relecture d'événements — commence la consommation à partir de plus récent messages seulement (pas de relecture d'historique)
Sémantique de diffusion en streaming — chaque nœud reçoit tous les événements, pas des messages en répartition de charge
Prévention des doublons — saute les événements provenant du même nœud (
nodeIdfiltrage)
Comment ça fonctionne
Chaque publication enregistre l'événement dans un topic Kafka (unique ou par type selon le mode)
Chaque type d'événement abonné est sondé par un thread démon dédié
Les messages sont délivrés aux écouteurs locaux seulement s'ils proviennent d'un nœud différent
Les enregistrements corrompus (« pilule empoisonnée ») sont ignorés pour maintenir la consommation active
Modes
MULTI_CHANNEL
Chaque type d'événement obtient son propre topic Kafka
Par défaut ; parallélisme et séparation
SINGLE_CHANNEL
Tous les événements routés vers ALL_SINGLE_CHANNEL
Lorsque l'ordre global entre tous les types d'événements est requis
Avantages
👍 Fonctionne dans des déploiements multi-nœuds
👍 Synchronise les événements socketio4j entre les serveurs
👍 Arrêt sûr et nettoyage des écouteurs
👍 Aucune rétropression sur les threads Netty
Limitations
ℹ️ Pas une file point-à-point — toujours en style diffusion
ℹ️ Pas de relecture historique — consomme uniquement à partir des derniers offsets
ℹ️ Nécessite la disponibilité d'un cluster Kafka
Garantie de délivrance : Sémantique au moins une fois — des livraisons en double sont possibles ; les écouteurs doivent être idempotents.
Mis à jour
Ce contenu vous a-t-il été utile ?