Having one worker with two processed queues is still a bit wrong. This --queue=default,staging means that the worker will process 'default' jobs with higher priority than 'staging' jobs. At first glance, this is exactly what you need.
However, a worker is still only one, and this situation may occur: a worker has no 'default' jobs, so it takes long job from 'staging' queue. While this long job is processed, you need to send notification (which job appears in 'default' queue). In this case your notification will have to wait until long job is done, and only after that a worker will be able to dispatch new notification. You will face it immediately after your app's load grows a little.
So, I advice to have two independent workers:
- one for 'default' queue (with quickly processed notifications)
- second for 'staging' queue (with long processed jobs)
php artisan queue:work --timeout=3600 --queue=default
php artisan queue:work --timeout=3600 --queue=staging
In this case workers are totally independent and don't interfere each other, long and short jobs are processed independently, in parallel.
Also, please note that queue:listen should be used in development only. In production you should use queue:work as it is faster and less resource-demanding (though queue:listen doesn't need to restart after code changing).