Introducción

Asynq es un marco de trabajo de tareas asíncronas para el lenguaje Go, que utiliza Redis como cola de mensajes y cuenta con escalabilidad y simplicidad.

Solución de tareas asíncronas de Asynq:

  • El cliente coloca tareas en la cola.
  • El servidor recupera tareas de la cola y comienza un hilo de trabajo (goroutine) para cada tarea.
  • Múltiples goroutines de trabajo procesan las tareas en paralelo.

Una cola de tareas es un mecanismo para distribuir el trabajo en varias máquinas. El sistema puede consistir en varios servidores y agentes de trabajo para lograr alta disponibilidad y escalabilidad horizontal.

Diagrama de la Cola de Tareas

Características

  • Garantiza al menos una ejecución de tarea
  • Programación de tareas
  • Reintento de tareas fallidas
  • Recuperación automática de tareas cuando un hilo de trabajo se bloquea
  • Cola de prioridad ponderada
  • Cola de prioridad estricta
  • Bajo retraso en la adición de tareas debido a operaciones de escritura rápidas en Redis
  • Duplica tareas utilizando opciones únicas
  • Permite establecer tiempos de espera y fechas límite para cada tarea
  • Permite agregar un grupo de tareas para llevar a cabo múltiples operaciones consecutivas en lotes
  • Interfaz de manejador flexible con soporte para middleware
  • Permite pausar la cola para detener el procesamiento de tareas desde la cola
  • Tareas periódicas
  • Admite Redis Cluster para fragmentación automática y alta disponibilidad
  • Admite Redis Sentinel para alta disponibilidad
  • Integración con Prometheus para recopilar y visualizar métricas de la cola
  • Interfaz web para inspeccionar y controlar de forma remota colas y tareas
  • Interfaz de línea de comandos para inspeccionar y controlar de forma remota colas y tareas