gpt4 book ai didi

php - Laravel 5.5 - Horizo​​n 不自动运行第二个队列

转载 作者:行者123 更新时间:2023-12-01 12:14:25 25 4
gpt4 key购买 nike

在带有 Redis 的 Forge 上使用 Laravel Horizo​​n,我有一个 default 队列和一个 notifications 队列。

通知作业都是在最近的作业下以暂停状态建立的,不会得到处理。这是使用的代码:

$event->owner->notify((new ItemWasLiked($event))->onQueue('notifications'));

我发现处理它们的唯一方法是手动显式运行以下命令以处理 notifications:

php artisan queue:work --queue=notifications

这不应该是自动的吗?我错过了什么?

最佳答案

我们需要通过在 配置/地平线.php:

'environments' => [
...
'(environment name)' => [
'supervisor-1' => [
...
'queue' => [ 'default', 'notifications' ],
],
],
],

'queue' 指令声明 Horizo​​n worker 监视作业的队列。开箱即用的配置仅指定 default 队列,因此 worker 将仅处理推送到该队列的作业。以上大致等同于:

php artisan queue:work --queue=default,notifications

...逗号分隔列表中的第一个队列具有最高优先级,最后一个队列具有最低优先级。 Horizo​​n 通过分配更多的进程数来确定队列的优先级,而不是按优先级顺序处理队列。

或者,我们可以将第二个工作组添加到处理第二个队列的配置中:

'(environment name)' => [
'supervisor-1' => [
...
'queue' => [ 'default' ],
],
'supervisor-2' => [
...
'queue' => [ 'notifications' ],
],
],

...为此,Horizo​​n 为同时运行的两个队列中的每一个启动队列工作进程。

关于php - Laravel 5.5 - Horizo​​n 不自动运行第二个队列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49337944/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com