Pub/Sub de NATS
El NatsEventStore proporciona un almacén de eventos para socketio4j usando Publicación/Suscripción NATS Core. Permite la sincronización de eventos entre múltiples instancias de servidor mediante la difusión de mensajes, pero los eventos son efímeros y no se persisten, lo que lo hace adecuado para implementaciones ligeras y de baja latencia donde no se requiere reproducción duradera.
Características clave
Difusión de baja latencia — NATS Core entrega mensajes rápidamente a todos los nodos conectados
Eventos efímeros — los mensajes no se almacenan; los suscriptores solo reciben eventos mientras están en línea
Asíncrono y no bloqueante — los despachadores se ejecutan fuera de los bucles de eventos de Netty
Enrutamiento por tema por evento — los tipos de eventos se asignan directamente a sujetos
Prevención de duplicados — los eventos que se originan en el mismo nodo se omiten mediante
filtrado por nodeId
Cómo funciona
publish0serializa el evento y lo envía a un sujeto de NATSsubscribe0registra un despachador que escucha el sujeto correspondienteLos mensajes se entregan a los oyentes solo si se originaron en un nodo diferente
Cancelar la suscripción limpia tanto las suscripciones como los despachadores
Apagar elimina todas las suscripciones activas pero no cierra la conexión compartida de NATS
Modos
MULTI_CHANNEL
Cada tipo de evento se asigna a su propio sujeto
Predeterminado; sujetos más pequeños, mejor separación
SINGLE_CHANNEL
Todos los eventos dirigidos a ALL_SINGLE_CHANNEL
Cuando se requiere un orden unificado entre tipos de eventos
Ventajas
👍 Entrega de latencia ultra baja 👍 Ideal cuando los eventos no requieren durabilidad o reproducción 👍 Muy ligero — dependencias y configuración mínimas 👍 Buena opción cuando NATS ya se usa para mensajería
Limitaciones
ℹ️ Los eventos son no persistidos — los mensajes perdidos no se pueden reproducir ℹ️ Los suscriptores deben estar conectados para recibir eventos ℹ️ Pueden ocurrir duplicados durante la recreación del despachador o la reconexión ℹ️ No admite desplazamientos de consumidores, retropresión ni recorte de flujo (se requiere JetStream para eso, lo cual está planificado para desarrollo)
Garantía de entrega: Semántica de como máximo una vez. Entrega por mejor esfuerzo con posible pérdida de mensajes: los oyentes de eventos deben tolerar eventos faltantes o fuera de orden.
Última actualización
¿Te fue útil?