非nestjsイベント

PHPz
リリース: 2024-09-04 22:42:18
オリジナル
1191 人が閲覧しました

Eventos no nestjs

イベントとは何ですか?

イベントは、アクションまたは状態の変化が発生したことを示す信号または通知です。アプリケーションのコンテキストでは、イベントにより、システムのさまざまな部分が非同期かつ分離された方法で通信できるようになります。これは、コンポーネントが独立して機能しながらも、システム内の他の場所で発生する変更を「リッスン」して反応できる必要があるマイクロサービス アーキテクチャで特に役立ちます。

NestJS のイベント

NestJS では、イベントの実装は、ネイティブ Node.js EventEmitter の拡張機能であり、より多くの機能を備えた EventEmitter2 ライブラリを使用して、シンプルかつ直感的な方法で行われます。次に、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 開発者にとって不可欠なツールです。

以上が非nestjsイベントの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート