Introduction

Asynq est un framework de tâches asynchrones pour le langage Go, qui utilise Redis comme file d'attente de messages et offre à la fois extensibilité et simplicité.

Solution de tâches asynchrones Asynq :

  • Le client place des tâches dans la file d'attente.
  • Le serveur récupère les tâches de la file d'attente et démarre un fil d'exécution travailleur (goroutine) pour chaque tâche.
  • Plusieurs goroutines travailleurs traitent les tâches en parallèle.

Une file de tâches est un mécanisme de distribution du travail sur plusieurs machines. Le système peut être composé de plusieurs serveurs travailleurs et agents pour obtenir une haute disponibilité et une extensibilité horizontale.

Diagramme de la file de tâches

Fonctionnalités

  • Garantit l'exécution d'une tâche au moins une fois
  • Programmation des tâches
  • Retentatives des tâches échouées
  • Reprise automatique des tâches en cas d'arrêt d'un fil d'exécution travailleur
  • File d'attente de priorité pondérée
  • File d'attente de priorité stricte
  • Faible délai lors de l'ajout de tâches en raison d'opérations d'écriture rapides dans Redis
  • Duplication des tâches à l'aide d'options uniques
  • Permet de définir des délais et des échéances pour chaque tâche
  • Permet d'agréger un groupe de tâches pour effectuer plusieurs opérations consécutives par lots
  • Interface de gestion flexible avec prise en charge des intergiciels
  • Permet de mettre en pause la file pour arrêter le traitement des tâches de la file d'attente
  • Tâches périodiques
  • Prend en charge Redis Cluster pour le partitionnement automatique et la haute disponibilité
  • Prend en charge Redis Sentinel pour la haute disponibilité
  • Intégration avec Prometheus pour collecter et visualiser les métriques de file d'attente
  • Interface web pour inspecter et contrôler à distance les files et les tâches
  • Interface en ligne de commande pour l'inspection et le contrôle à distance des files et des tâches