jobqueue

jobqueue

Detalhes

  • Go
  • PostgreSQL
  • pgx
  • Prometheus
  • Docker
  • GitHub Actions

Uma fila de jobs sobre PostgreSQL que continua correta quando workers caem.

Um serviço de processamento assíncrono de jobs em Go que usa o PostgreSQL como armazenamento e como fila: um pool limitado de workers pega os jobs, repete falhas com backoff e recupera o trabalho deixado por um processo que caiu.

Construído enquanto aprendia Go: projetei o modelo de concorrência, a máquina de estados dos jobs e as garantias de entrega.

Destaques

  • Claim com FOR UPDATE SKIP LOCKED: qualquer número de workers e processos compartilha um banco sem entregar o mesmo job duas vezes
  • Leases com fencing token monotônico: um worker cujo lease expirou não consegue sobrescrever o resultado de uma tentativa mais nova
  • Backoff exponencial com jitter, erros retentáveis e permanentes, dead-letter e um shutdown gracioso que libera jobs interrompidos sem consumir tentativas
  • Testes de integração com o race detector do Go contra um PostgreSQL real, incluindo três pools executando 200 jobs exatamente uma vez cada
My Projects