Introdução
Asynq é um framework de tarefas assíncronas para a linguagem Go, que usa o Redis como fila de mensagens e possui escalabilidade e simplicidade.
Solução de tarefas assíncronas Asynq:
- O cliente insere tarefas na fila.
- O servidor recupera tarefas da fila e inicia uma thread de trabalho (goroutine) para cada tarefa.
- Múltiplas goroutines de trabalho processam tarefas em paralelo.
Uma fila de tarefas é um mecanismo para distribuir o trabalho em várias máquinas. O sistema pode consistir em vários servidores de trabalho e agentes para alcançar alta disponibilidade e escalabilidade horizontal.
Características
- Garante a execução da tarefa pelo menos uma vez
- Agendamento de tarefas
- Retentativas de tarefas falhadas
- Recuperação automática de tarefas quando uma thread de trabalho falha
- Fila de prioridade ponderada
- Fila de prioridade estrita
- Baixo atraso na adição de tarefas devido a operações de gravação rápidas no Redis
- Duplica tarefas usando opções únicas
- Permite definir tempos limite e prazos para cada tarefa
- Permite agregar um grupo de tarefas para realizar várias operações consecutivas em lotes
- Interface de manipulador flexível com suporte para middleware
- Permite pausar a fila para interromper o processamento de tarefas da fila
- Tarefas periódicas
- Suporta Redis Cluster para shard automático e alta disponibilidade
- Suporta Redis Sentinel para alta disponibilidade
- Integração com Prometheus para coletar e visualizar métricas da fila
- Interface web para inspecionar e controlar remotamente filas e tarefas
- Interface de linha de comando para inspecionar e controlar remotamente filas e tarefas