Моя настройка стека состоит из следующих
Machine1 – Основной сервер (Запуск laravel)
Machine2 – сервер MySql для кодовой базы laravel
Machine3 – работник Beanstalkd
У меня есть настройка Supervisord on Machine1 и добавлен следующий прослушиватель очереди
[program:queue1] command=php artisan queue:listen --queue=queue1 --tries=2 ...
Мой конфигурационный файл очереди laravel (app / config / queue.php) читает следующее
'beanstalkd' => array( 'driver' => 'beanstalkd', 'host' => '--- Machine3 IP ---', 'queue' => 'queue1', 'ttr' => 60, ),
И я установил beanstalkd на Machine3 вместе с консолью Beanstalk и вижу, что мои задачи выталкиваются в очередь и успешно выполняются. Однако я не уверен, что Machine3 на самом деле их выполняет, и причиной моего подозрения является использование High CPU на главном сервере по сравнению с отсутствием всплесков в использовании CPU на Machine3
Я полностью закрываю свой сервер beanstalkd, чтобы проверить, все еще обрабатывается очередь, и результатом была ошибка, сообщаемая laravel, указывающая, что он не может подключиться к серверу beanstalkd.
Я где-то читал, что вам нужно иметь вашу кодовую базу laravel на сервере beanstalkd ( Machine3 ) тоже, действительно ли это способ?
На какой машине вы запускаете queue:listen
– это машина, которая выполняет фактическую обработку очереди.
На данный момент все, что вы делаете, это хранение очередей на machine3 , но обработка их на machine1 .
Поэтому вам нужно запустить machine3 run queue:listen
если вы хотите, чтобы она обрабатывала очередь.