rPub/Sub confiable de Redis

circle-info

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 streamsRReliableTopic asegura que los mensajes se persistan y se entreguen a suscriptores tardíos

  • Recorte automático opcional — evita el crecimiento ilimitado del stream usando XTRIM

  • Despacho 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

  • publish0 escribe eventos en un tema confiable, que internamente agrega a un stream de Redis

  • subscribe0 registra un oyente en el tema confiable; los eventos se extraen del stream subyacente incluso después de reconectar

  • Las entradas del stream se recortan periódicamente basándose en streamMaxLength y trimEvery

  • El 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

Modo
Comportamiento
Cuándo usar

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?