在远程服务器上运行beanstalkd工人

时间:2014-10-20 11:54:24

标签: php laravel-4 beanstalkd pheanstalk

我的堆叠设置包括以下

Machine1 - 主服务器(运行laravel)
Machine2 - 用于laravel代码库的MySql Server
Machine3 - Beanstalkd工作者

我在 Machine1 上设置了Supervisord,并添加了以下队列侦听器

[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,
),

我已经在 Machine3 上安装了beanstalkd以及Beanstalk控制台,可以看到我的任务被推送到队列并成功执行。但是我不确定 Machine3 是否实际执行它们,我怀疑的原因是主服务器上的高CPU使用率与 Machine3

我完全关闭了我的beanstalkd服务器以检查队列是否仍在处理,结果是laravel报告的错误,表明它无法连接到beanstalkd服务器。

我在某处读到你需要在beanstalkd服务器( Machine3 )上使用你的laravel代码库,这真的是要走的路吗?

1 个答案:

答案 0 :(得分:3)

您运行queue:listen的任何一台计算机都是执行队列实际处理的计算机。

目前,您所做的只是将队列存储在 machine3 上,但在 machine1 上处理它们。

如果您希望它处理队列,则需要 machine3 运行queue:listen命令。