
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
