We're currently keeping it as simple as possible. We just use a table and this query that runs every second:
"DELETE FROM job_queue RETURNING type, info;"
Works great and reliably so far. I think our current volume is on the order of 100-1000 req/sec. We'll likely switch to graphile-worker when we need more performance, but we're all about avoiding premature optimization. That library has been benchmarked to handle 10k req/sec: https://github.com/graphile/worker#performance