Нам нужно указать Horizon запустить обработчика очереди, который обрабатывает очередь notifications
в дополнение к очереди default
, добавив элемент в конфигурацию обработчика очереди в config / horizon.php:
'environments' => [
...
'(environment name)' => [
'supervisor-1' => [
...
'queue' => [ 'default', 'notifications' ],
],
],
],
Директива 'queue'
объявляет, в каких очередях Horizon worker наблюдает за заданиями. В готовой конфигурации указана только очередь default
, поэтому работник будет обрабатывать только задания, помещенные в эту очередь. Вышеупомянутое примерно эквивалентно:
php artisan queue:work --queue=default,notifications
... где первая очередь в списке, разделенном запятыми, имеет наивысший приоритет, а последняя очередь - самый низкий. Horizon определяет приоритеты очередей, выделяя большую долю количества процессов, а не обрабатывая очереди в порядке приоритета.
В качестве альтернативы мы могли бы добавить вторую рабочую группу в конфигурацию, которая обрабатывает вторую очередь:
'(environment name)' => [
'supervisor-1' => [
...
'queue' => [ 'default' ],
],
'supervisor-2' => [
...
'queue' => [ 'notifications' ],
],
],
... для которых Horizon запускает рабочие процессы очереди для каждой из двух очередей, которые выполняются одновременно.
18.03.2018
horizon.php
ИСКЛЮЧАЯ для '(имя среды)', поскольку у меня былоdevelopment
, вместо _3 _ / _ 4_ по умолчанию. Поэтому я добавил блокdevelopment
к горизонту очередей, и он отлично сработал. Еще раз спасибо, вы сделали мой день! 18.03.2018