„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Ereignisse in NestJS

Ereignisse in NestJS

Veröffentlicht am 08.11.2024
Durchsuche:435

Eventos no nestjs

Was sind Ereignisse?

Ereignisse sind Signale oder Benachrichtigungen, die darauf hinweisen, dass eine Aktion oder Zustandsänderung stattgefunden hat. Im Kontext von Anwendungen ermöglichen Ereignisse die asynchrone und entkoppelte Kommunikation verschiedener Teile des Systems. Dies ist besonders nützlich in Microservices-Architekturen, in denen Sie Komponenten benötigen, die unabhängig funktionieren, aber dennoch in der Lage sind, Änderungen an anderer Stelle im System zu „hören“ und darauf zu reagieren.

Ereignisse in NestJS

In NestJS erfolgt die Implementierung von Ereignissen auf einfache und intuitive Weise mithilfe der EventEmitter2-Bibliothek, die eine Erweiterung des nativen Node.js EventEmitter mit mehr Funktionen ist. Als Nächstes sehen wir uns an, wie Ereignisse in NestJS konfiguriert und verwendet werden.

Konfigurieren von Ereignissen in NestJS

Zuerst müssen Sie das Paket @nestjs/event-emitter installieren, das eine vollständige Integration von EventEmitter2 mit NestJS bietet:

npm install @nestjs/event-emitter

Importieren Sie nach der Installation des Pakets das EventEmitterModule-Modul in das Hauptmodul Ihrer Anwendung:

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

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

Sobald das Modul konfiguriert ist, können Sie mit der Erstellung und Verarbeitung von Ereignissen in Ihrer Anwendung beginnen.

Ereignisse erstellen und ausgeben

Lassen Sie uns ein einfaches Beispiel erstellen, bei dem ein Ereignis ausgegeben wird, wenn ein neuer Benutzer erstellt wird.

1. Erstellen Sie ein Ereignis:

Zuerst definieren wir eine Klasse zur Darstellung unseres Ereignisses:

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

2. Ausgeben des Ereignisses:

In dem Dienst, in dem die Benutzererstellungslogik implementiert ist, können Sie das Ereignis ausgeben, nachdem der Benutzer erstellt wurde:

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);
  }
}

Hier wird das user.created-Ereignis immer dann ausgegeben, wenn ein neuer Benutzer erstellt wird.

Zuhören und auf Ereignisse reagieren

Um auf ausgegebene Ereignisse zu reagieren, können Sie Listener erstellen. Dabei handelt es sich um Funktionen oder Methoden, die aufgerufen werden, wenn das entsprechende Ereignis ausgelöst wird.

1. Erstellen eines Listeners:

Ein Listener ist eine Klasse, die auf ein bestimmtes Ereignis reagiert:

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. Registrierung des Listeners:

Damit NestJS den Listener erkennt, muss er im entsprechenden Modul registriert werden:

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

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

Jetzt wird jedes Mal, wenn das Ereignis „user.created“ ausgegeben wird, die Methode „handleUserCreatedEvent“ aufgerufen.

Erweiterte Event-Anwendungen

Ereignisse können in verschiedenen Szenarien verwendet werden, um die Anwendungsarchitektur zu verbessern:

  1. Integration mit Microservices: Ereignisse sind eine effiziente Art der Kommunikation zwischen Microservices und ermöglichen es ihnen, entkoppelt zu bleiben.
  2. Asynchrone Verarbeitung: Sie können Ereignisse ausgeben, um Hintergrundvorgänge auszuführen, z. B. das Senden von E-Mails oder die Verarbeitung großer Datenmengen.
  3. Protokollierung und Überwachung: Ereignisse eignen sich ideal zum Erfassen von Benutzeraktionen und Systemereignissen für Überwachungszwecke.

Abschluss

Die Verwendung von Ereignissen in NestJS ist eine leistungsstarke Möglichkeit, modulare, skalierbare und einfach zu wartende Systeme zu erstellen. Durch die Integration mit EventEmitter2 erleichtert NestJS das Erstellen, Senden und Abhören von Ereignissen, sodass Sie ereignisgesteuerte Architekturen einfach und effektiv implementieren können. Ob für die Kommunikation zwischen Microservices oder für die asynchrone Verarbeitung, Ereignisse sind ein wesentliches Werkzeug im Arsenal jedes NestJS-Entwicklers.

Freigabeerklärung Dieser Artikel ist abgedruckt unter: https://dev.to/rafael_avelarcampos_e71c/eventos-no-nestjs-131j?1 Bei Verstößen wenden Sie sich bitte an [email protected], um ihn zu löschen
Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3