EventEmitterModule
Provides an in-process event bus for decoupled, event-driven code.
Syntax
EventEmitterModule.forRoot() | @OnEvent(name) | eventEmitter.emit(name, payload) Parameters
| Name | Type | Required | Description |
|---|---|---|---|
name | string | No | The event name, often namespaced with dots. |
payload | any | No | The data passed to listeners. |
Returns
DynamicModule — A module exposing EventEmitter2.
Examples
import { Module } from '@nestjs/common';
import { EventEmitterModule } from '@nestjs/event-emitter';
@Module({ imports: [EventEmitterModule.forRoot()] })
export class AppModule {}
import { Injectable } from '@nestjs/common';
import { EventEmitter2, OnEvent } from '@nestjs/event-emitter';
@Injectable()
export class UsersService {
constructor(private events: EventEmitter2) {}
signup(email: string) {
this.events.emit('user.created', { email });
}
@OnEvent('user.created')
sendWelcome(payload: { email: string }) {
// send email
}
}
Notes
Install @nestjs/event-emitter. Events are synchronous by default; set
`{ async: true }` in @OnEvent for awaited listeners. Use wildcard
patterns (e.g. user.*) with `wildcard: true` in forRoot().