
jobqueue
Detalles
- Go
- PostgreSQL
- pgx
- Prometheus
- Docker
- GitHub Actions
Una cola de jobs sobre PostgreSQL que sigue siendo correcta cuando los workers se caen.
Un servicio de procesamiento asíncrono de jobs en Go que usa PostgreSQL como almacén y como cola: un pool acotado de workers toma los jobs, reintenta los fallos con backoff y recupera el trabajo que deja un proceso caído.
Construido mientras aprendía Go: diseñé el modelo de concurrencia, la máquina de estados de los jobs y las garantías de entrega.
Destaques
- Claim con FOR UPDATE SKIP LOCKED: cualquier número de workers y procesos comparte una base de datos sin entregar el mismo job dos veces
- Leases con fencing token monótono: un worker cuyo lease expiró no puede sobrescribir el resultado de un intento más reciente
- Backoff exponencial con jitter, errores reintentables y permanentes, dead-letter y un apagado ordenado que libera los jobs interrumpidos sin consumir intentos
- Tests de integración con el race detector de Go contra un PostgreSQL real, incluidos tres pools ejecutando 200 jobs exactamente una vez cada uno
