In short, I want to use queues to process several tasks at a time - can this be done?
In short - yes, it can be done. Each work occupied by the worker is blocked until it is released. This means that other workers will receive different jobs for processing.
IMO it is better to configure Supervisor to run several queue:work commands. It will take only one job, process it and stop execution. It is not recommended to run PHP scripts in an infinite loop (as queue:listen does), because after some time they may have memory problems (leaks, etc.).
You can configure Supervisor to restart ready-made workers.
source share