Laravel Supervisor: Как последовательно обрабатывать определенные задания?

#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 , в котором вы обрабатываете только свою очередь заказов. Аналогичным образом обновите существующий процесс для работы с двумя другими очередями.

Таким образом, у вас не будет нескольких вспомогательных процессов для обработки вашей очереди заказов. Следовательно, задачи будут обрабатываться одна за другой, тогда как все остальные ваши очереди будут иметь несколько процессов для их обработки.