That’s it!
After being announced by DHH at the Rails World Conf that took place in October, solid_queue is now released! DHH said it would be “a few months” in October, I did not think it would be on such short notice, it’s great news for the Rails eco-system.
Solid_queue is a DB-based queuing backend for Active Job, that can be used with SQL databases such as MySQL, PostgreSQL or SQLite. The idea behind solid_queue is to have a unique gem to manage all features that a background job processor should have (delayed jobs, concurrency controls, phasing queues, job priorities, recurring jobs, etc).
Like the good_job gem, it leverages the SKIP LOCKED clause that’s the main feature that allows using SQL databases for managing job-like tasks. This feature allows workers to fetch and lock jobs without locking other workers (more on that on this
Next step, release of the "Mission Control” dashboard?
Resources used:
- solid_queue announcement - https://www.youtube.com/watch?v=iqXjGiQ_D-A&t=52m21s
- solid_queue GitHub repo - https://github.com/basecamp/solid_queue
- 37signals announcing the release - https://dev.37signals.com/introducing-solid-queue/
- good_job Github repo - https://github.com/bensheldon/good_job
- SKIP LOCKED sql feature explained by MySQL - https://dev.mysql.com/blog-archive/mysql-8-0-1-using-skip-locked-and-nowait-to-handle-hot-rows/