Back to projects

Systems experiment

GoFlowQ

A Go worker queue for testing leases, retries, dead letters, and what happens when jobs do not finish cleanly.

goqueuesdistributed systems

Problem framing

Background jobs look simple until a worker dies halfway through a task, a retry runs twice, or the queue fills with work nobody owns anymore. GoFlowQ is my small queue runtime for those cases.

It is not trying to replace RabbitMQ. It is a place to implement the mechanics directly: leases, retries, dead letters, stuck job detection, and clean worker shutdown.

Design constraints

  • Keep scheduling readable.
  • Store enough metadata to explain why a job is running, delayed, retried, or dead.
  • Treat retries as load, not magic.
  • Make shutdown boring. Workers should leave the system in a state you can explain.

Current direction

I am using it to compare Postgres-backed queues with broker-backed systems. The interesting parts are fairness, visibility, idempotency, and what "at least once" delivery costs once application code gets involved.