#laravel #supervisord
#ларавель #супервизор
Вопрос:
У меня есть три задания в моем приложении:
SendEmail, ProcessOrder, sendNotification
и это моя конфигурация супервайзера:
[program:laravel-worker]
process_name=%(program_name)s_%(process_num)02d
command=php /app/artisan queue:work --queue=email,order,notify --tries=5 --sleep=3
autostart=true
autorestart=true
numprocs=8
redirect_stderr=true
stdout_logfile=/app/worker.log
stopwaitsecs=3600
Как я могу сообщить супервизору обрабатывать ProcessOrder
(очередь заказов) последовательно, а не несколько одновременно? Если у меня в очереди 5 заданий, так как я установил numprocs
значение 8, супервайзер пытается обработать их все одновременно, но я хочу, чтобы он обрабатывал ProcessOrder
одно за другим
Ответ №1:
Я бы рекомендовал вам создать дополнительный процесс супервизора numprocs=1
, в котором вы обрабатываете только свою очередь заказов. Аналогичным образом обновите существующий процесс для работы с двумя другими очередями.
Таким образом, у вас не будет нескольких вспомогательных процессов для обработки вашей очереди заказов. Следовательно, задачи будут обрабатываться одна за другой, тогда как все остальные ваши очереди будут иметь несколько процессов для их обработки.