イベントとは何ですか?
イベントは、アクションまたは状態の変化が発生したことを示す信号または通知です。アプリケーションのコンテキストでは、イベントにより、システムのさまざまな部分が非同期かつ分離された方法で通信できるようになります。これは、コンポーネントが独立して機能しながらも、システム内の他の場所で発生する変更を「リッスン」して反応できる必要があるマイクロサービス アーキテクチャで特に役立ちます。
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 メソッドが呼び出されます。
アドバンストイベントアプリケーション
イベントは、アプリケーション アーキテクチャを改善するためにさまざまなシナリオで使用できます。
結論
NestJS でイベントを使用することは、モジュール式でスケーラブルで保守が容易なシステムを作成するための強力な方法です。 EventEmitter2 との統合により、NestJS はイベントの作成、発行、リッスンを容易にし、イベント駆動型のアーキテクチャをシンプルかつ効果的に実装できるようにします。マイクロサービス間の通信であっても、非同期処理であっても、イベントは NestJS 開発者にとって不可欠なツールです。
以上が非nestjsイベントの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。