list-timelineKafka/AutoMQ

Die KafkaEventStore bietet ein verteiltes, Streaming-Event-Store für socketio4j unter Verwendung von Apache Kafka. Es ermöglicht horizontale Skalierung indem es Events über alle Serverinstanzen hinweg broadcastet, sodass Ereignisnachrichten, Raumbeitritte, -verlassen und andere interne Ereignisse zwischen den Knoten synchronisiert werden.

Wesentliche Merkmale

  • Verteilt & fehlertolerant — Ereignisse werden in Kafka persistiert und an jeden aktiven Knoten geliefert

  • Asynchrones & nicht-blockierendes Veröffentlichen — vermeidet das Blockieren von Netty-Event-Loops

  • Grenzen für Event-Wiederholung — beginnt das Konsumieren ab neueste Nachrichten nur (keine Historienwiedergabe)

  • Streaming-Broadcast-Semantik — jeder Knoten erhält alle Ereignisse, keine lastverteilten Nachrichten

  • Duplikatvermeidung — überspringt Ereignisse, die vom selben Knoten stammen (nodeId Filterung)

Wie es funktioniert

  • Jede Veröffentlichung speichert das Ereignis in einem Kafka-Topic (einzelnes oder pro Typ, abhängig vom Modus)

  • Jeder abonnierte Ereignistyp wird von einem dedizierten Daemon-Thread abgefragt

  • Nachrichten werden nur an lokale Listener geliefert, wenn sie von einem anderen Knoten stammen

  • Beschädigte („Poison-Pill“) Datensätze werden übersprungen, damit der Konsum weiterläuft

Modi

Modus
Verhalten
Wann verwenden

MULTI_CHANNEL

Jeder Ereignistyp erhält sein eigenes Kafka-Topic

Standard; Parallelität & Trennung

SINGLE_CHANNEL

Alle Ereignisse werden an ALL_SINGLE_CHANNEL

Wenn eine globale Reihenfolge über alle Ereignistypen erforderlich ist

Vorteile

  • 👍 Funktioniert in Multi-Node-Umgebungen

  • 👍 Synchronisiert socketio4j-Ereignisse über Server hinweg

  • 👍 Sicheres Herunterfahren & Bereinigung von Listenern

  • 👍 Keine Rückdruckbelastung auf Netty-Threads

Einschränkungen

  • ℹ️ Keine Punkt-zu-Punkt-Warteschlange — immer im Broadcast-Stil

  • ℹ️ Keine historische Wiedergabe — konsumiert nur ab den neuesten Offsets

  • ℹ️ Erfordert Verfügbarkeit des Kafka-Clusters

Zustellgarantie: Mindestens-einmal-Semantik — doppelte Zustellungen möglich; Listener sollten idempotent sein.

Zuletzt aktualisiert

War das hilfreich?