CQRS Module
NestJS 🔴 SeniorDé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.
Termes liés
Sources
Fiche mise à jour le 2026-09-27