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.

Diagrama da Fila de Tarefas

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