You dispatch a job, nothing happens, and there is no error. Or the job ran once, then ran again, or sits in the queue while the worker idles. "Queue not working" is one symptom with about a dozen causes, and most of them can be told apart in a few minutes if you check in the right order. This guide goes from the cheapest checks to the subtle ones, with the commands to confirm each.
Quick diagnosis: start here
Is the job really queued? If QUEUE_CONNECTION=sync , jobs run inline during the request and no worker is involved.
Is a worker running, for the right connection and queue name? Check ps aux | grep queue:work and compare its --queue value with the queue the job was dispatched to.
Where is the job right now? Waiting, delayed, reserved (running or lost), or failed. Each state has a different fix.
Is the worker running current code and config?…