File de messages
Une file de messages est un système qui stocke des messages (tâches ou événements) envoyés par des producteurs et les transmet à des consommateurs pour traitement, découplant ainsi les deux et permettant une communication asynchrone et fiable entre composants du système.
Comprendre File de messages
Les files de messages résolvent un problème fondamental des systèmes distribués : comment transférer de façon fiable du travail entre composants lorsque les deux parties peuvent être indisponibles en même temps ? Sans file d'attente, si le worker est occupé ou hors ligne lorsqu'une tâche arrive, elle est perdue. Avec une file, la tâche est stockée jusqu'à ce qu'un worker soit disponible pour la traiter.
Le modèle producteur-consommateur est simple : un producteur (serveur web, gestionnaire de webhooks, action utilisateur) place un message dans la file. Un consommateur (worker en arrière-plan) prend les messages de la file et les traite. Plusieurs producteurs et consommateurs peuvent fonctionner en même temps et évoluer indépendamment.
Les systèmes de file de messages les plus connus incluent RabbitMQ (complet, supporte des routages complexes), Redis (léger, rapide, utilisé pour des files simples), AWS SQS (géré, sans serveur) et Apache Kafka (streaming à haut débit). GAIA utilise RabbitMQ pour des routages complexes et Redis/ARQ pour des tâches d'arrière-plan plus simples.
Les files de messages permettent une gestion souple des pics de charge. Si 1000 événements webhook arrivent simultanément, ils sont mis en file immédiatement et traités au rythme que les consommateurs peuvent gérer : aucun événement n'est perdu et le système ne s'effondre pas sous la charge.
Comment GAIA utilise File de messages
GAIA utilise RabbitMQ pour acheminer les événements entre les composants du système et ARQ (Async Redis Queue) pour l'exécution des tâches en arrière-plan. Lorsqu'un e-mail arrive ou qu'un déclencheur d'automatisation s'active, l'événement est immédiatement placé dans la file et traité par des travailleurs en arrière-plan. Cette architecture garantit qu'aucun événement n'est perdu lors des périodes de forte charge et permet une logique de réessai fiable.
Concepts liés
Webhook
Un webhook est un mécanisme de rappel HTTP par lequel un système envoie automatiquement une requête HTTP à une URL spécifiée dès qu’un événement défini survient, ce qui permet une notification et une intégration en temps réel entre services sans avoir à interroger régulièrement.
Automatisation événementielle
L'automatisation événementielle (ou automatisation basée sur les événements) lance un workflow au moment où quelque chose se produit, comme l'arrivée d'un nouvel e-mail, la création d'un ticket ou l'ajout d'une ligne dans un tableur, plutôt qu'à heure fixe. Chaque automatisation associe un événement déclencheur aux actions à mener, et le système où l'événement a eu lieu prévient la plateforme d'automatisation, le plus souvent par un webhook.
Automatisation des flux de travail
L’automatisation des flux de travail consiste à utiliser la technologie pour exécuter automatiquement des processus et des tâches métier répétitives, réduisant ainsi les efforts manuels et les erreurs humaines.
Tâche cron
Une tâche cron (cron job) est une commande ou un script qui s'exécute automatiquement selon un horaire répété, par exemple chaque nuit à 2 h ou chaque lundi à 9 h. L'horaire s'écrit sous forme d'expression cron à cinq champs (minute, heure, jour du mois, mois, jour de la semaine), et le planificateur cron de Linux, macOS et des autres systèmes Unix la vérifie chaque minute et lance la tâche quand l'heure correspond.
Intégration API
L'intégration API est le processus qui consiste à connecter différentes applications logicielles via leurs interfaces de programmation (API), leur permettant de partager facilement données et fonctionnalités.
