CQRS Module

NestJS 🔴 Senior

Définition

Module @nestjs/cqrs qui sépare les écritures (CommandBus + @CommandHandler) des lectures (QueryBus + @QueryHandler) et notifie les changements d'état via EventBus + @EventsHandler. Les Sagas écoûtent les evenements via RxJS pour déclencher de nouvelles commandes dans des workflows complexes.

Analogie

Comme séparer le guichet des dépôts (commands) de celui des renseignements (queries) dans une banque, avec un tableau d'affichage (events) pour prévenir les autres services.

Exemple de code

@CommandHandler(CreateOrderCommand)
export class CreateOrderHandler
  implements ICommandHandler<CreateOrderCommand> {
  constructor(private eventBus: EventBus, private repo: OrderRepo) {}

  async execute(cmd: CreateOrderCommand) {
    const order = await this.repo.create(cmd.dto);
    this.eventBus.publish(new OrderCreatedEvent(order.id));
    return order;
  }
}

Cas d'usage

Découpler la logique d'écriture, de lecture et de notification dans un domaine métier complexe (e-commerce, facturation).

Anti-pattern

Appliquer CQRS et des sagas a un CRUD simple, ajoutant de la complexité sans bénéfice réel.
#architecture#interview

Fiche mise à jour le 2026-09-27

← → au clavier pour passer d'une fiche à l'autre