"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > Eventos en nestjs

Eventos en nestjs

Publicado el 2024-11-08
Navegar:200

Eventos no nestjs

¿Qué son los eventos?

Los eventos son señales o notificaciones que indican que ha ocurrido una acción o cambio de estado. En el contexto de las aplicaciones, los eventos permiten que diferentes partes del sistema se comuniquen de forma asincrónica y desacoplada. Esto es especialmente útil en arquitecturas de microservicios, donde se necesitan componentes que funcionen de forma independiente pero que aún así puedan "escuchar" y reaccionar a los cambios que ocurren en otras partes del sistema.

Eventos en NestJS

En NestJS, la implementación de eventos se realiza de una manera simple e intuitiva utilizando la biblioteca EventEmitter2, que es una extensión del EventEmitter nativo de Node.js, con más funciones. A continuación, veamos cómo configurar y usar eventos en NestJS.

Configuración de eventos en NestJS

Primero, necesitas instalar el paquete @nestjs/event-emitter, que ofrece integración completa de EventEmitter2 con NestJS:

npm install @nestjs/event-emitter

Después de instalar el paquete, importe el módulo EventEmitterModule al módulo principal de su aplicación:

import { Module } from '@nestjs/common';
import { EventEmitterModule } from '@nestjs/event-emitter';

@Module({
  imports: [
    EventEmitterModule.forRoot(), // Importando o EventEmitterModule
    // outros módulos
  ],
})
export class AppModule {}

Con el módulo configurado, puedes comenzar a crear y manejar eventos en tu aplicación.

Creación y emisión de eventos

Creemos un ejemplo básico donde se emite un evento cuando se crea un nuevo usuario.

1. Crear un evento:

Primero, definimos una clase para representar nuestro evento:

export class UserCreatedEvent {
  constructor(
    public readonly userId: string,
    public readonly email: string,
  ) {}
}

2. Emitiendo el evento:

En el servicio donde se implementa la lógica de creación de usuarios, puedes emitir el evento después de que se crea el usuario:

import { Injectable } from '@nestjs/common';
import { EventEmitter2 } from '@nestjs/event-emitter';
import { UserCreatedEvent } from './events/user-created.event';

@Injectable()
export class UserService {
  constructor(private readonly eventEmitter: EventEmitter2) {}

  async createUser(email: string) {
    // Lógica para criar o usuário
    const userId = '12345'; // Exemplo de ID gerado

    // Emitir o evento
    const event = new UserCreatedEvent(userId, email);
    this.eventEmitter.emit('user.created', event);
  }
}

Aquí el evento creado por el usuario se emite cada vez que se crea un nuevo usuario.

Escuchar y responder a eventos

Para reaccionar a eventos emitidos, puedes crear oyentes, que son funciones o métodos que se llamarán cuando se active el evento correspondiente.

1. Creando un oyente:

Un oyente es una clase que reacciona ante un evento específico:

import { OnEvent } from '@nestjs/event-emitter';
import { Injectable } from '@nestjs/common';
import { UserCreatedEvent } from './events/user-created.event';

@Injectable()
export class UserCreatedListener {
  @OnEvent('user.created')
  handleUserCreatedEvent(event: UserCreatedEvent) {
    console.log('Usuário criado com sucesso:', event.userId, event.email);
    // Lógica adicional, como enviar um e-mail de boas-vindas
  }
}

2. Registrar al oyente:

Para que NestJS reconozca al oyente, este debe estar registrado en el módulo correspondiente:

import { Module } from '@nestjs/common';
import { UserService } from './user.service';
import { UserCreatedListener } from './listeners/user-created.listener';

@Module({
  providers: [UserService, UserCreatedListener],
})
export class UserModule {}

Ahora, cada vez que se emita el evento user.created, se llamará al método handleUserCreatedEvent.

Aplicaciones avanzadas para eventos

Los eventos se pueden utilizar en varios escenarios para mejorar la arquitectura de la aplicación:

  1. Integración con Microservicios: Los eventos son una forma eficiente de comunicarse entre microservicios, permitiéndoles permanecer desacoplados.
  2. Procesamiento asincrónico: puede emitir eventos para realizar operaciones en segundo plano, como enviar correos electrónicos o procesar grandes cantidades de datos.
  3. Registro y auditoría: los eventos son ideales para capturar acciones del usuario y eventos del sistema con fines de auditoría.

Conclusión

El uso de eventos en NestJS es una forma poderosa de crear sistemas modulares, escalables y fáciles de mantener. A través de la integración con EventEmitter2, NestJS facilita la creación, emisión y escucha de eventos, lo que le permite implementar arquitecturas basadas en eventos de manera simple y efectiva. Ya sea para la comunicación entre microservicios o para el procesamiento asincrónico, los eventos son una herramienta esencial en el arsenal de cualquier desarrollador de NestJS.

Declaración de liberación Este artículo se reproduce en: https://dev.to/rafael_avelarcampos_e71c/eventos-no-nestjs-131j?1 Si hay alguna infracción, comuníquese con [email protected] para eliminarla.
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3