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.
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