Laravel Horizon - несколько очередей, запущенных от одного супервизора

Может ли кто-нибудь помочь с правильной конфигурацией в Horizon.php, чтобы один супервизор запускал несколько очередей? Я пытался:

'supervisor-1' => [
    'connection' => 'redis',
    'queue' => ['default', 'queue2'],
    'balance' => 'simple',
    'processes' => 10,
    'tries' => 3,
],

а также:

'supervisor-1' => [
    'connection' => 'redis',
    'queue' => 'default, queue2',
    'balance' => 'simple',
    'processes' => 10,
    'tries' => 3,
],

Вторая очередь отображается правильно в горизонте, и я могу отправлять им задания, но они просто не обрабатываются.

Я подготовлен к работе в кузнице, и мои очереди настроены с помощью redis со следующей конфигурацией queue.php:

'redis' => [
        'driver' => 'redis',
        'connection' => 'default',
        'queue' => 'default', // Default Queue
        'retry_after' => 90,
        'block_for' => null,
    ],

person Adam Lambert    schedule 19.12.2018    source источник
comment
Хорошо ... обнаружил проблему почти сразу после публикации этого сообщения! Правильный синтаксис: 'queue' => 'default, queue2', (без пробелов между очередями). Я оставлю это открытым - может быть, это будет полезно для кого-то еще, и, похоже, довольно мало документации по настройке mutli-queue.   -  person Adam Lambert    schedule 19.12.2018
comment
Я думаю, вы не перезагружали, код в порядке   -  person CodeGuru    schedule 20.05.2020
comment
@AdamLambert, если наличие нескольких очередей, таких как 'queue' => 'default, queue2',, является решением этого вопроса, вы должны добавить его в качестве ответа и пометить его как принятый.   -  person Christos Lytras    schedule 24.06.2021


Ответы (1)


in config/horizon.php

'supervisor-1' => [
    'connection' => 'redis',
    'queue' => ['default', 'queue2'],
    'balance' => 'simple',
    'processes' => 10,
    'tries' => 3,
],

в супервизоре: --queue=default,queue2

[program:laravel-worker]
process_name=%(program_name)s_%(process_num)02d
command=php /var/www/html/App/artisan queue:listen redis --queue=default,queue2 --sleep=3 --tries=3 
autostart=true
autorestart=true
user=root
numprocs=8
redirect_stderr=true
stdout_logfile= /var/www/html/App/storage/logs/worker.log
person Saurabh Mistry    schedule 19.06.2019
comment
Когда мы устанавливаем и хотим использовать Horizon, мы не используем ни artisan queue:listen, ни artisan queue:work, мы используем artisan horizon, ref: Horizon ›Конфигурация супервизора. - person Christos Lytras; 24.06.2021