«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > События вnesjs

События вnesjs

Опубликовано 8 ноября 2024 г.
Просматривать:768

Eventos no nestjs

Что такое события?

События — это сигналы или уведомления, указывающие на то, что произошло действие или изменение состояния. В контексте приложений события позволяют различным частям системы взаимодействовать асинхронно и раздельно. Это особенно полезно в архитектурах микросервисов, где вам нужно, чтобы компоненты функционировали независимо, но при этом были в состоянии «слушать» и реагировать на изменения, происходящие в других частях системы.

События в NestJS

В NestJS реализация событий осуществляется простым и интуитивно понятным способом с использованием библиотеки EventEmitter2, которая является расширением собственной библиотеки Node.js EventEmitter с дополнительными функциями. Далее давайте посмотрим, как настраивать и использовать события в NestJS.

Настройка событий в NestJS

Во-первых, вам необходимо установить пакет @nestjs/event-emitter, который обеспечивает полную интеграцию EventEmitter2 с NestJS:

npm install @nestjs/event-emitter

После установки пакета импортируйте модуль EventEmitterModule в основной модуль вашего приложения:

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

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

Настроив модуль, вы можете начать создавать и обрабатывать события в своем приложении.

Создание и проведение событий

Давайте создадим базовый пример, в котором событие генерируется при создании нового пользователя.

1. Создать мероприятие:

Сначала мы определяем класс для представления нашего события:

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

2. Отправка события:

В сервисе, где реализована логика создания пользователя, вы можете генерировать событие после создания пользователя:

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

Здесь событие user.created генерируется при создании нового пользователя.

Прослушивание событий и реагирование на них

Чтобы реагировать на создаваемые события, вы можете создавать прослушиватели, которые представляют собой функции или методы, которые будут вызываться при срабатывании соответствующего события.

1. Создание прослушивателя:

Слушатель — это класс, который реагирует на определенное событие:

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. Регистрация прослушивателя:

Чтобы NestJS распознал слушателя, его необходимо зарегистрировать в соответствующем модуле:

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

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

Теперь каждый раз, когда генерируется событие user.created, будет вызываться метод handleUserCreatedEvent.

Расширенные приложения для проведения мероприятий

События можно использовать в различных сценариях для улучшения архитектуры приложения:

  1. Интеграция с микросервисами: события — это эффективный способ взаимодействия между микросервисами, позволяющий им оставаться разделенными.
  2. Асинхронная обработка: вы можете генерировать события для выполнения фоновых операций, таких как отправка электронных писем или обработка больших объемов данных.
  3. Журналирование и аудит: события идеально подходят для регистрации действий пользователя и системных событий в целях аудита.

Заключение

Использование событий в NestJS — это мощный способ создания модульных, масштабируемых и простых в обслуживании систем. Благодаря интеграции с EventEmitter2 NestJS упрощает создание, отправку и прослушивание событий, позволяя просто и эффективно реализовывать архитектуры, управляемые событиями. Будь то связь между микросервисами или асинхронная обработка, события являются важным инструментом в арсенале любого разработчика NestJS.

Заявление о выпуске Эта статья воспроизведена по адресу: https://dev.to/rafael_avelarcampos_e71c/eventos-no-nestjs-131j?1 Если есть какие-либо нарушения, свяжитесь с [email protected], чтобы удалить ее.
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3