Pub/Sub confiable de Redis
SocketIO4J utiliza el cliente Redisson para conectarse a un servidor Redis. También pueden admitirse backends compatibles con Redis alternativos como Valkey y DragonflyDB.
El RedissonPubSubReliableEventStore proporciona un distribuido, capaz de reproducir almacén de eventos para socketio4j usando Temas Confiables de Redis respaldados por Streams de Redis. Admite sincronización multinodo con recorte opcional de streams para controlar la huella de memoria, permitiendo durabilidad a través de reinicios del servidor mientras sigue entregando eventos en tiempo casi real.
Redis Reliable Pub/Sub utiliza internamente Streams para durabilidad, pero no expone offsets; Redis Streams expone offsets directamente, permitiendo la reproducción controlada y la recuperación del estado de conexión (función planificada para desarrollo).
Características clave
Entrega confiable mediante Redis Streams — retiene mensajes recientes para reproducción controlada
Temas respaldados por streams —
RReliableTopicasegura que los mensajes se persistan y se entreguen a suscriptores tardíosRecorte automático opcional — evita el crecimiento ilimitado del stream usando
XTRIMDespacho asíncrono — las devoluciones de llamada de entrega ocurren fuera de los bucles de eventos de Netty
Prevención de duplicados — filtra eventos originados por uno mismo mediante
filtrado por nodeId
Cómo funciona
publish0escribe eventos en un tema confiable, que internamente agrega a un stream de Redissubscribe0registra un oyente en el tema confiable; los eventos se extraen del stream subyacente incluso después de reconectarLas entradas del stream se recortan periódicamente basándose en
streamMaxLengthytrimEveryEl recorte se realiza de forma asíncrona en un hilo daemon para evitar bloquear E/S
Metadatos del stream (
activePubTopics,activeSubTopics,trimTopics) se rastrean por tipo de evento
Modos
MULTI_CHANNEL
Streams por tipo de evento + temas confiables
Predeterminado; aísla el tráfico y mantiene el orden por tipo de evento
SINGLE_CHANNEL
Todos los eventos enrutan a un único stream confiable
Cuando se requiere orden global estricto
Ventajas
👍 Mensajes persistidos en stream de Redis — recuperables hasta los límites de recorte 👍 Adecuado para sincronización multinodo con durabilidad 👍 El recorte opcional evita uso de memoria ilimitado 👍 Puede reproducir mensajes recientes después de reconexiones (dentro del rango recortado) 👍 Modelo de despliegue de Redis familiar, no se necesita Kafka/NATS
Limitaciones
ℹ️ No completamente exactamente una vez — pueden ocurrir duplicados después de reinicios o reconexiones ℹ️ El orden es por stream — el orden entre eventos requiere modo de canal único ℹ️ Requiere soporte de Redis Streams (Redis 5+) ℹ️ La fiabilidad depende de la configuración de retención del stream y la estrategia de recorte
Garantía de entrega: Semántica de al menos una vez — los oyentes deben ser idempotentes para manejar posibles entregas duplicadas.
Última actualización
¿Te fue útil?