Aller au contenu principal

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

  1. Création : une commande Symfony ou un service empile une tâche dans la file
  2. Transport : la tâche est prise en charge par le processeur
  3. Exécution : le service métier associé est appelé
  4. 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 :

AspectCronjobFile d'attente
DéclencheurTemps (schedule)Événement (tâche empilée)
ExécutionPériodique, potentiellement videÀ la demande, continue
Usage typiquePolling de données externesTraitement asynchrone de données déjà importées

Les cronjobs importent les données, les files d'attente traitent les effets de bord.