Modèle de files d'attente
Vue d'ensemble
LogiDAV utilise un système de files d'attente hybride : SQL-backed pour la persistance et RabbitMQ pour le transport.
Cycle de vie d'une tâche
- Création : une commande Symfony ou un service empile une tâche dans la file
- Transport : la tâche est prise en charge par le processeur
- Exécution : le service métier associé est appelé
- Résultat : succès (retrait de la file) ou échec (marquage + retry possible)
Processeur de files
# Lancer le processeur
php bin/console meduse:queue:processor --action=runQueues
Le processeur consomme les tâches en attente et les exécute séquentiellement.
Points clés
- Les files d'attente découpent les traitements longs en tâches unitaires
- Les échecs sont tracés et peuvent être rejoués (voir Runbook : rejouer les tâches échouées)
- Le processeur doit tourner en continu en production
- La persistance SQL garantit qu'aucune tâche n'est perdue en cas de redémarrage
Files d'attente et cronjobs
Les cronjobs et les files d'attente sont complémentaires :
| Aspect | Cronjob | File d'attente |
|---|---|---|
| Déclencheur | Temps (schedule) | Événement (tâche empilée) |
| Exécution | Périodique, potentiellement vide | À la demande, continue |
| Usage typique | Polling de données externes | Traitement asynchrone de données déjà importées |
Les cronjobs importent les données, les files d'attente traitent les effets de bord.