57 lines
2.1 KiB
Markdown
57 lines
2.1 KiB
Markdown
---
|
|
title: Message Queue
|
|
created: 2026-06-06
|
|
updated: 2026-06-06
|
|
type: concept
|
|
tags: [tech, architecture, devops]
|
|
confidence: high
|
|
contested: false
|
|
sources: [synthesized]
|
|
---
|
|
# 📨 Message Queue (File de Messages)
|
|
|
|
## Définition Courte
|
|
Composant d'architecture qui permet à des services d'**échanger des messages de manière asynchrone** via une file, découplant producteur et consommateur.
|
|
|
|
## Explication Détaillée
|
|
**Pattern de base** :
|
|
- **Producer** envoie un message à un **topic** ou **queue**.
|
|
- Le **broker** (le middleware) stocke le message de manière durable.
|
|
- Un ou plusieurs **consumers** reçoivent le message et le traitent.
|
|
- Si le consumer crashe, le message reste dans la queue et sera rejoué.
|
|
|
|
**Patterns avancés** :
|
|
- **Pub/Sub** : un message publié est lu par N consumers.
|
|
- **Work Queue** : un message traité par un seul consumer (load balancing).
|
|
- **Dead Letter Queue** : messages non traitables routés ailleurs.
|
|
- **Idempotence** : le consumer doit gérer les doublons.
|
|
|
|
**Garanties de livraison** :
|
|
- **At most once** : le message est livré 0 ou 1 fois (peut être perdu).
|
|
- **At least once** : livré au moins 1 fois (doublons possibles). **Le standard**.
|
|
- **Exactly once** : 1 fois, jamais plus. Très coûteux (Kafka transactions).
|
|
|
|
## Cas d'Usage
|
|
- Communication asynchrone entre microservices.
|
|
- Traitement de tâches lourdes en arrière-plan (envoi de mail, génération PDF).
|
|
- Découplage de pics (lissage de charge).
|
|
- Event Sourcing (cf. [[patterns-architecture]]).
|
|
- IoT : ingestion massive de capteurs.
|
|
|
|
## Outils Liés
|
|
- **Kafka** : le standard, throughput massif, durable.
|
|
- **RabbitMQ** : classique, AMQP, plus simple.
|
|
- **NATS** : léger, pub/sub natif, idéal cloud-native.
|
|
- **Redis Streams** : in-memory, rapide, simple.
|
|
- **AWS SQS/SNS**, **GCP Pub/Sub**.
|
|
|
|
## Pages Liées
|
|
- [[architecture-microservices]]
|
|
- [[patterns-architecture]]
|
|
- [[idempotence]]
|
|
- [[observabilite]]
|
|
|
|
## Questions Ouvertes
|
|
- Kafka est-il encore pertinent face à des solutions plus modernes (Redpanda, WarpStream) ?
|
|
- Comment tester correctement des workflows asynchrones ?
|