Product
Ordering per key
Jobs with the same key run one at a time, in order. Everything else runs in parallel.
Idempotency
Give a job an id and a second enqueue inside 24 hours is ignored.
Priority
Three levels. A high priority job jumps the line without starving the rest.
Rate limit
Cap a queue at N runs a second when the thing you call has an opinion about that.
Leases
A job is leased for 30 seconds and extended while your handler runs.
Graceful shutdown
On SIGTERM a worker stops taking work and finishes what it has, up to your timeout.
Concurrency
Per queue, per worker, and a global cap. All three are one flag.
Local mode
The same binary runs against a local Postgres with no account.
Timezone aware
Amsterdam means Amsterdam, including the two nights a year it is not.
Catch-up window
If nothing ran for an hour, a missed run still fires inside its window.
Overlap policy
Skip, queue, or run anyway. The default is skip, which is what you want.
Pause
One command, and the schedule keeps its history.
Five attempts
Then parked with the payload, the last error and the whole attempt list.
Replay
One job, a filter, or the whole queue, from the dashboard or the CLI.
Alerts
A dead letter over your threshold pages you. Under it, it waits for Monday.
Export
JSON out, with everything needed to run it somewhere else.