You don't need another piece of infrastructure. You don't need Redis complexity. You just need background jobs that work. Postkiq runs entirely inside the database you're already using.
Adding Redis just for background jobs adds a whole new layer of complexity. You have to monitor it, back it up, secure it, and pay for it.
Postkiq changes the math. By using the advanced features of modern PostgreSQL (SKIP LOCKED, LISTEN/NOTIFY), we give you the performance of a dedicated queue with the simplicity of a single database. It's one less thing to worry about at 3 AM.
No weird configuration files. No complex setup.
Add it to your Gemfile. Run the install generator. That's it.
Use standard ActiveJob syntax. MyJob.perform_later. No rewrite needed.
Your jobs are safe in Postgres. If your transaction rolls back, the job vanishes. Magic.
class User < ApplicationRecord # Atomic. Safe. Simple. def register! transaction do save! # This job ONLY enqueues if save! succeeds. WelcomeEmailJob.perform_later(self) end end end
Other queues make you pay extra for the tools you actually need to run a business.
Don't let one loud customer slow down everyone else. Postkiq has native support for Apartment and ActsAsTenant. Pause a specific tenant instantly if you need to.
Don't accidentally DDoS your own API partners. Set threshold and concurrency limits right in the job definition.
Stop sending the same email twice. We calculate a digest for every job and prevent duplicates automatically.
Sometimes Job A needs to finish before Job B starts. We handle dependencies, batches, and cascade failures so you don't have to write spaghetti code.
Ditch the whenever gem. Schedule recurring jobs directly in your database. It just makes more sense.
When things go wrong (and they will), you need to know why. We give you the data to fix it.
A full audit log. See exactly when a job was created, started, failed, or retried. See what arguments changed.
We calculate p95 and p99 latency for you. Know exactly how long jobs are waiting and how long they take to run.
We handle our own partitions. We create new ones when needed and clean up old ones automatically.