list-timelineKafka/AutoMQ

El KafkaEventStore proporciona un almacén de eventos distribuido y de streaming para socketio4j usando Apache Kafka. Permite escalado horizontal al retransmitir eventos a través de todas las instancias del servidor para que los mensajes de eventos, uniones a salas, salidas y otros eventos internos estén sincronizados entre los nodos.

Características clave

  • Distribuido y tolerante a fallos — los eventos se persisten en Kafka y se entregan a cada nodo activo

  • Publicación asíncrona y no bloqueante — evita bloquear los bucles de eventos de Netty

  • Límites de reproducción de eventos — empieza a consumir desde los más nuevos solo mensajes (sin reproducción histórica)

  • Semántica de difusión por streaming — cada nodo recibe todos los eventos, no mensajes balanceados por carga

  • Prevención de duplicados — omite eventos que se originan en el mismo nodo (filtrado por nodeId )

Cómo funciona

  • Cada publicación almacena el evento en un topic de Kafka (único o por tipo dependiendo del modo)

  • Cada tipo de evento suscrito es sondeado por un hilo demonio dedicado

  • Los mensajes se entregan a los escuchadores locales solo si provienen de un nodo diferente

  • Los registros corruptos (“pastilla venenosa”) se omiten para mantener viva la consumición

Modos

Modo
Comportamiento
Cuándo usar

MULTI_CHANNEL

Cada tipo de evento obtiene su propio topic de Kafka

Por defecto; paralelismo y separación

SINGLE_CHANNEL

Todos los eventos dirigidos a ALL_SINGLE_CHANNEL

Cuando se requiere orden global entre todos los tipos de eventos

Ventajas

  • 👍 Funciona en despliegues multinodo

  • 👍 Sincroniza eventos de socketio4j entre servidores

  • 👍 Apagado seguro y limpieza de escuchadores

  • 👍 Cero retropresión en los hilos de Netty

Limitaciones

  • ℹ️ No es una cola punto a punto — siempre estilo difusión

  • ℹ️ Sin reproducción histórica — consume solo desde los últimos offsets

  • ℹ️ Requiere disponibilidad del clúster de Kafka

Garantía de entrega: Semántica al menos una vez — se pueden producir entregas duplicadas; los escuchadores deben ser idempotentes.

Última actualización

¿Te fue útil?