Performance: Event handling
Event handling affects how quickly the server responds to incoming events or requests, impacting API responsiveness and CPU usage.
import { Injectable } from '@nestjs/common'; import { EventEmitter2 } from 'eventemitter2'; @Injectable() export class AppService { constructor(private eventEmitter: EventEmitter2) {} registerListener() { this.eventEmitter.on('dataEvent', () => { // optimized single handler for all data }); } }
import { Injectable } from '@nestjs/common'; import { EventEmitter2 } from 'eventemitter2'; @Injectable() export class AppService { constructor(private eventEmitter: EventEmitter2) {} registerListeners() { for (let i = 0; i < 1000; i++) { this.eventEmitter.on('dataEvent', () => { // heavy processing }); } } }
| Pattern | Event Listeners | CPU Overhead | Impact | Verdict |
|---|---|---|---|---|
| Many heavy event listeners | 1000+ | Very High | High CPU usage delays request processing | [X] Bad |
| Single optimized event listener | 1 | Low | Minimal CPU usage, fast event processing | [OK] Good |
@EventsHandler.eventBus.publish(new UserCreatedEvent('Alice')) is called?
import { EventsHandler, IEventHandler } from '@nestjs/cqrs';
export class UserCreatedEvent {
constructor(public readonly username: string) {}
}
@EventsHandler(UserCreatedEvent)
export class UserCreatedHandler implements IEventHandler<UserCreatedEvent> {
handle(event: UserCreatedEvent) {
console.log(`User created: ${event.username}`);
}
}UserCreatedEvent triggers UserCreatedHandler which logs the username.import { EventsHandler, IEventHandler } from '@nestjs/cqrs';
export class OrderPlacedEvent {
constructor(public readonly orderId: number) {}
}
@EventsHandler(OrderPlacedEvent)
export class OrderPlacedHandler implements IEventHandler<OrderPlacedEvent> {
handle() {
console.log('Order placed:', orderId);
}
}orderId is used but not defined because event parameter is missing.UserCreatedEvent and UserDeletedEvent, in one handler class. Which approach correctly implements this in NestJS?Pass the test and this pattern moves unknown