Neoq
Queue-agnostic background job library for Go, with a pleasant API and powerful features.
Matrix Chat 
Getting Started
See the Getting Started wiki to get started.
About
Neoq is a queue-agnostic background job library for Go, with a pleasant API and powerful features.
Queue-agnostic means that whether you're using an in-memory queue for developing and testing, or Postgres or Redis queue in production -- your job processing code doesn't change. Job handlers are agnostic to the queue providing jobs. It also means that you can mix queue types within a single application. If you have ephemeral or periodic tasks, you may want to process them in an in-memory queue, and use Postgres or Redis queues for jobs requiring queue durability.
Neoq aims to be simple, reliable, easy to integrate, and demand a minimal infrastructure footprint by providing queue backends that match your existing tech stack.
What it does
- Multiple Backends: In-memory, Postgres, Redis, or user-supplied custom backends.
- Retries: Jobs may be retried a configurable number of times with exponential backoff and jitter to prevent thundering herds
- Job uniqueness: jobs are fingerprinted based on their payload and status to prevent job duplication (multiple jobs with the same payload are not re-queued)
- Job Timeouts: Queue handlers can be configured with per-job timeouts with millisecond accuracy
- Periodic Jobs: Jobs can be scheduled periodically using standard cron syntax
- Future Jobs: Jobs can be scheduled in the future
- Concurrency: Concurrency is configurable for every queue
- Job Deadlines: If a job doesn't complete before a specific
time.Time, the job expires
Getting Started