Kafka/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
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?