Laravel 5.5 - Horizon 不会自动 运行 第二个队列
Laravel 5.5 - Horizon not running second queue automatically
在带有 Redis 的 Forge 上使用 Laravel Horizon,我有一个 default
队列和一个 notifications
队列。
通知作业都是在最近的作业下以暂停状态建立的,不会得到处理。这是使用的代码:
$event->owner->notify((new ItemWasLiked($event))->onQueue('notifications'));
我发现处理它们的唯一方法是手动 运行 以下命令明确地供 notifications
处理:
php artisan queue:work --queue=notifications
这不应该是自动的吗?我错过了什么?
我们需要通过向中的队列工作者配置添加一个元素来指示 Horizon 启动一个队列工作者来处理 notifications
队列以及 default
队列。 =29=].php:
'environments' => [
...
'(environment name)' => [
'supervisor-1' => [
...
'queue' => [ 'default', 'notifications' ],
],
],
],
'queue'
指令声明 Horizon worker 在哪个队列中监视作业。 out-of-box 配置只指定了 default
队列,所以 worker 只会处理推送到该队列的作业。以上大致相当于:
php artisan queue:work --queue=default,notifications
...其中 comma-separated 列表中的第一个队列具有最高优先级,最后一个队列具有最低优先级。 Horizon 通过分配更多的进程数来确定队列的优先级,而不是按优先级顺序处理队列。
或者,我们可以将第二个工作组添加到处理第二个队列的配置中:
'(environment name)' => [
'supervisor-1' => [
...
'queue' => [ 'default' ],
],
'supervisor-2' => [
...
'queue' => [ 'notifications' ],
],
],
...为此,Horizon 为同时 运行 的两个队列中的每一个启动队列工作进程。
在带有 Redis 的 Forge 上使用 Laravel Horizon,我有一个 default
队列和一个 notifications
队列。
通知作业都是在最近的作业下以暂停状态建立的,不会得到处理。这是使用的代码:
$event->owner->notify((new ItemWasLiked($event))->onQueue('notifications'));
我发现处理它们的唯一方法是手动 运行 以下命令明确地供 notifications
处理:
php artisan queue:work --queue=notifications
这不应该是自动的吗?我错过了什么?
我们需要通过向中的队列工作者配置添加一个元素来指示 Horizon 启动一个队列工作者来处理 notifications
队列以及 default
队列。 =29=].php:
'environments' => [
...
'(environment name)' => [
'supervisor-1' => [
...
'queue' => [ 'default', 'notifications' ],
],
],
],
'queue'
指令声明 Horizon worker 在哪个队列中监视作业。 out-of-box 配置只指定了 default
队列,所以 worker 只会处理推送到该队列的作业。以上大致相当于:
php artisan queue:work --queue=default,notifications
...其中 comma-separated 列表中的第一个队列具有最高优先级,最后一个队列具有最低优先级。 Horizon 通过分配更多的进程数来确定队列的优先级,而不是按优先级顺序处理队列。
或者,我们可以将第二个工作组添加到处理第二个队列的配置中:
'(environment name)' => [
'supervisor-1' => [
...
'queue' => [ 'default' ],
],
'supervisor-2' => [
...
'queue' => [ 'notifications' ],
],
],
...为此,Horizon 为同时 运行 的两个队列中的每一个启动队列工作进程。