S42-Core EventsDomain Clase
- EventsDomain - s42-core
EventsDomain - s42-core
La clase EventsDomain
es una utilidad central del paquete s42-core
, diseñada para facilitar la comunicación basada en eventos entre microservicios o células en un sistema distribuido. Permite la publicación, escucha y enrutamiento de eventos a través de Redis, asegurando interacciones eficientes y desacopladas entre servicios independientes.
Propósito
La clase EventsDomain
es particularmente útil en escenarios donde los microservicios o células necesitan interactuar de manera indirecta mediante eventos. Por ejemplo:
- Registro de usuarios y envío de correos electrónicos: Un servicio de registro de usuarios emite un evento cuando se crea un nuevo usuario. El servicio de correos electrónicos escucha este evento para enviar un correo de bienvenida.
- Procesamiento de pedidos y notificaciones: Un servicio de procesamiento de pedidos emite eventos que activan notificaciones a los clientes a través de un servicio de notificaciones independiente.
- Actualizaciones en tiempo real: Los eventos pueden utilizarse para actualizar clientes en la interfaz de usuario o desencadenar acciones específicas en otros servicios.
Instalación
Instala el paquete s42-core
:
Características
- Difusión de eventos: Publica eventos que pueden ser consumidos por otros servicios.
- Registro de escuchas: Registra fácilmente escuchas para eventos específicos.
- Enrutamiento dinámico de eventos: Soporta el enrutamiento de eventos a instancias específicas.
- Integración con Redis: Utiliza Redis para una comunicación confiable y eficiente.
- Instancia Singleton: Asegura una única instancia de
EventsDomain
en toda la aplicación.
Uso
Configuración de EventsDomain
Registrar un Listener de Eventos
Puedes escuchar eventos específicos y activar un callback cuando ocurra el evento:
Emitir Eventos
Para emitir un evento que pueda ser consumido por otros servicios:
Cerrar EventsDomain
Al cerrar el servicio, libera los recursos:
Ejemplo Completo
Escenario: Servicio de Registro de Usuarios y Servicio de Correo Electrónico
Servicio de Registro de Usuarios
Servicio de Correo Electrónico
Métodos
getInstance(redisInstance: RedisClient, uuid: string): EventsDomain
Devuelve una instancia singleton de EventsDomain
.
redisInstance
(RedisClient): Instancia del cliente Redis para la comunicación.uuid
(string): Identificador único para el proceso.
listenEvent<TypePayload>(eventName: string, callback: (payload: TypePayload) => void): void
Registra un listener para un evento específico.
eventName
(string): Nombre del evento a escuchar.callback
(function): Función que se ejecutará cuando se reciba el evento.
emitEvent(eventName: string, payload: object): boolean
Emite un evento para ser consumido por otros servicios.
eventName
(string): Nombre del evento a emitir.payload
(object): Datos que se enviarán con el evento.
getAllRegisteredEvents(): Record<string, TypeEvent>
Devuelve todos los eventos registrados.
close(): void
Detiene la difusión de eventos y libera las conexiones de Redis.
Ventajas
- Desacoplamiento: Los servicios pueden comunicarse sin dependencias directas.
- Escalabilidad: Maneja fácilmente múltiples instancias y distribuye eventos eficientemente.
- Confiabilidad: Utiliza Redis para una mensajería robusta entre servicios.
- Simplicidad: Proporciona una API sencilla para gestionar eventos.
Licencia
Este proyecto está bajo la Licencia MIT. Consulta el archivo LICENSE para más detalles.