nPub/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

  • publish0 serializa el evento y lo envía a un sujeto de NATS

  • subscribe0 registra un despachador que escucha el sujeto correspondiente

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

Modo
Comportamiento
Cuándo usar

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?