В Laravel нет встроенной возможности для группировки или сегментации очередей исходя из пользователей. Однако, для достижения описанного вами поведения, есть несколько подходов:
1. **Использование разных очередей для разных пользователей**: Вы можете создавать отдельную очередь для каждого пользователя и передавать имя пользовательской очереди в функцию dispatch, когда вы помещаете задание в очередь. Таким образом, все задания в одной очереди будут выполнены полностью, прежде чем начнется выполнение заданий в другой очереди.
```php
$userJob = (new UserSpecificJob())->onQueue($user->id);
dispatch($userJob);
```
Данный подход вполне жизнеспособен, но требует управления большим количеством очередей и может повлиять на производительность при очень большом количестве пользователей.
2. **Использование приоритетов очередей**: Laravel поддерживает приоритеты для очередей. Вы можете определить приоритеты для ваших очередей в файле конфигурации и затем указывать приоритет при помещении задания в очередь. Это позволяет вам обеспечить, что некоторые очереди будут выполнены прежде других. Однако, это не гарантирует, что все задания от одного пользователя будут выполнены до заданий другого.
3. **Использование цепочек заданий (Job Chaining)**: Laravel позволяет вам связать задания в цепочки, которые будут выполнены последовательно. Если каждый пользователь имеет набор заданий, которые должны быть выполнены вместе, этот подход может быть эффективным. Однако, он не учитывает задания, которые могут быть добавлены в процессе - новые задания будут помещены в конец общей очереди, а не специфической цепочки заданий.
В целом, метод группировки зависит от ваших конкретных требований и потребностей вашего приложения.