Как работает очередь в нескольких процессах в Laravel?

Всем привет.
Ребят, подскажите, если у меня есть очередь в которую помещаются все задания по работе с API одного сервиса и мне необходимо чтобы задачи выполнялись строго по очереди с интервалом. Я их помещаю в одну очередь "API".
Так же есть остальные задачи (отправка писем и т.п.), которые я помещаю в "default".
Запускаю супервизор примерно с таким конфигом:
[program:app-worker]
process_name=%(program_name)s_%(process_num)02d
command=php /var/www/app/artisan queue:work --queue=API,default --tries=0 --rest=10
autostart=true
autorestart=true
stopasgroup=true
killasgroup=true
user=user
numprocs=2
redirect_stderr=true

Вопрос в следующем: будет сначала выполняться очередь "API" в двух процессах (параллельно), потом очередь "Default" ? Или же будет параллельно выполняться в одном процессе "API", а во втором процессе "Default"?
  • Вопрос задан
  • 105 просмотров
Пригласить эксперта
Ответы на вопрос 1
Alex_Wells
@Alex_Wells
PHP/Kotlin
Ты запускаешь два процесса, каждый из которых обрабатывает две очереди в указанном порядке. То есть две одновременно разгребают API, пока там что-то есть, а до default дело дойдет только когда в API будет пусто.

Как только в API появятся еще задачи, оба воркера опять будут разгребать только API, пока там не станет пусто.

Для автоматической балансировки есть horizon.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы