3

我的堆栈设置包括以下

Machine1 - 主服务器(运行 laravel) Machine2
- laravel代码库的 MySql 服务器 Machine3 - Beanstalkd worker 我在 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 上安装了 beantalkdBeanstalk 控制台,可以看到我的任务被推送到队列并成功执行。但是我不确定Machine3是否真的在执行它们,我怀疑的原因是主服务器上的 CPU 使用率很高,而Machine3上的 CPU 使用率没有峰值

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

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

4

1 回答 1

3

无论您在哪台机器上运行queue:listen,都是对队列进行实际处理的机器。

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

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

于 2014-10-20T11:58:21.427 回答