Kafka Transporter

NestJS 🔴 Senior

Définition

Transporteur de microservices NestJS base sur kafkajs, configure via Transport.KAFKA. Il expose ClientKafkaProxy pour producteur/consommateur, gère automatiquement les topics de réponse (suffixe .reply) et, depuis NestJS v12, accepte des expressions régulières dans @MessagePattern/@EventPattern pour matcher plusieurs topics.

Analogie

Comme un central téléphonique qui route les appels (messages) vers le bon service selon le numéro compose (topic), avec la possibilité d'écoûter tout un groupe de numéros a la fois (regex).

Exemple de code

const app = await NestFactory.createMicroservice(AppModule, {
  transport: Transport.KAFKA,
  options: { client: { brokers: ['localhost:9092'] } },
});

@MessagePattern('orders.created')
handleOrder(@Payload() data: any, @Ctx() ctx: KafkaContext) {
  const { topic, partition } = ctx.getMessage();
}

Cas d'usage

Faire communiquer des microservices via un bus Kafka haute-throughput avec garanties de partitionnement.

Anti-pattern

Utiliser @MessagePattern (request-reply) pour de gros volumes d'evenements fire-and-forget au lieu de @EventPattern.
#architecture#interview

En entretien

  1. Explique-moi comment fonctionne le transporteur Kafka dans NestJS.

    Il s'appuie sur kafkajs et se configure via Transport.KAFKA, en exposant ClientKafkaProxy pour producteur et consommateur, et il gère automatiquement les topics de réponse avec un suffixe .reply. C'est comme un central téléphonique qui route les messages vers le bon service selon le topic composé.

  2. Quel est le piège classique entre @MessagePattern et @EventPattern avec Kafka ?

    Utiliser @MessagePattern, qui est du request-reply, pour de gros volumes d'événements fire-and-forget, alors qu'@EventPattern est fait pour ça et évite d'attendre une réponse inutile.

  3. Tu sais qu'il y a une nouveauté depuis NestJS v12 sur le matching des topics, tu peux m'en parler ?

    Oui, on peut désormais utiliser des expressions régulières dans @MessagePattern/@EventPattern pour matcher plusieurs topics d'un coup, plutôt que de déclarer un handler par topic exact.

Dans l'actu

  • 12/10 NestJS 12.1.3 embarque une grosse fournée de correctifs core, platform-express et microservices : les enhancers globaux request-scoped ne sont plus ignorés en silence (échec explicite au démarrage), le cycle de vie SSE est fiabili… Semaine 42 (1re moitié) · 12 – 14 octobre 2026 →
  • 28/09 NestJS 12.1.1 corrige le logger (sortie JSON, niveaux, logs fatal et bufferisés)… Les clients microservices MQTT, RMQ, NATS et Kafka retentent aussi correctement après un échec de connexion. Semaine 40 (1re moitié) · 28 – 30 septembre 2026 →
  • 15/09 NestJS stabilise sa v12 avec les patchs 12.0.2 et 12.0.3 (plus 11.2.4/11.2.5 pour la branche 11) : correctifs microservices Kafka (le hook de fin de traitement est toujours exécuté), destruction des sockets TCP ouvertes à l'arrêt, validation UUID améliorée, et mises à jour de multer 2.4.0 et file-type 22.1.0. Semaine 38 · 14 – 20 septembre 2026 →

Fiche mise à jour le 2026-09-27

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