2014-10-20 3 views
3

Мой стек настройки состоит из следующих

Machine1 - Основной сервер (Запуск Laravel)
machine2 - MySql сервера для Laravel кодовую
Machine3 - Beanstalkd работник

Я установка Supervisord на mACHINE1 и добавил следующую очередь слушательЗапуск beanstalkd работника на удаленном сервере

[program:queue1] 
command=php artisan queue:listen --queue=queue1 --tries=2 
... 

Моя очередь Laravel конфигурационный файл (приложение/Config/queue.php) считывает следующую

'beanstalkd' => array(
    'driver' => 'beanstalkd', 
    'host' => '--- Machine3 IP ---', 
    'queue' => 'queue1', 
    'ttr' => 60, 
), 

И я установил beanstalkd на Machine3 вместе с Beanstalk консоли и может видеть мои задачи толкают в очередь и успешно выполняться. Однако я не уверен, что если Machine3 на самом деле их выполнения, а причина моей подозрительности является высокая загрузка ЦП на основном сервере по сравнению с отсутствием шипов в использовании процессора на Machine3

Я полностью обесточен мой beanstalkd Сервер, чтобы проверить, все еще обрабатывается очередь, и результатом была ошибка, сообщаемая laravel, указывающая, что она не может подключиться к серверу beanstalkd.

Я где-то читал, что вам нужно иметь вашу кодовую базу laravel на сервере beanstalkd (Machine3) тоже, действительно ли это был путь?

+0

Привет, Я пытаюсь сделать что-то очень похожее - используя beanstalkd для облегчения связи между двумя микропроцессорами Laravel. Вам нужно было скопировать свой класс Job по двум проектам, чтобы сделать эту работу? Спасибо – mils

ответ

2

Независимо от того, на какой машине вы запускаете queue:listen on - это машина, которая выполняет фактическую обработку очереди.

На данный момент все, что вы делаете, хранения очередей на machine3, но их обработки на MACHINE1.

Таким образом, вы должны иметь machine3 команду queue:listen, если вы хотите, чтобы она обрабатывала очередь.

+0

Так что это означает, что мне нужно иметь мою кодовую базу (или, по крайней мере, ее часть, которая выполняет задания в очереди) на ** machine3 **, но будут выполняться задания и задания, выполняемые ** machine1 **, на ** machine3 ** учитывая, что оба они будут подключены к одному и тому же серверу MySql, т.е. ** machine1 **? – dylanfa88

+1

Исправить. Вы должны «вытащить» свою кодовую базу на ** Machine3 **. Или, если хотите, вы можете иметь «уменьшенную» версию на ** Machine3 **, но обычно проще поддерживать только одну версию. – Laurence

+0

Да, попробуем! благодарим за вашу помощь! – dylanfa88

Смежные вопросы