Хобрук: Ваш путь к мастерству в программировании

Laravel 5.5 - Horizon не запускает вторую очередь автоматически

Используя Laravel Horizon в Forge с Redis, у меня есть default очередь и notifications очередь.

Все задания уведомления создаются со статусом паузы для последних заданий и НЕ обрабатываются. Это используемый код:

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

Единственный способ, который я нашел для их обработки, - это вручную запустить следующую команду для обработки notifications:

php artisan queue:work --queue=notifications

Разве это не должно происходить автоматически по мере поступления? Что мне не хватает?


  • Работает ли горизонт ? Вы должны настроить его для работы через что-то вроде супервизора. 17.03.2018
  • Он должен запускаться автоматически в кузнице, когда мы добавляем демона, я считаю, отображается как работающий под статусом демона в кузнице, я также запускал его с php artisan horizon вручную на всякий случай, но все еще приостановлен и не обрабатывается .. 17.03.2018

Ответы:


1

Нам нужно указать 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
  • @Wonka Хороший улов ... не могу сказать, что я действительно ответил на ваш вопрос напрямую, но я рад, что вы это поняли! 23.03.2018
  • Новые материалы

    Создание кнопочного меню с использованием HTML, CSS и JavaScript
    Вы будете создавать кнопочное меню, которое имеет состояние наведения, а также позволяет вам выбирать кнопку при нажатии на нее. Финальный проект можно увидеть в этом Codepen . Шаг 1..

    Внедрите OAuth в свои веб-приложения для повышения безопасности
    OAuth — это широко распространенный стандарт авторизации, который позволяет приложениям получать доступ к ресурсам от имени пользователя, не раскрывая его пароль. Это позволяет пользователям..

    Классы в JavaScript
    class является образцом java Script Object. Конструкция «class» позволяет определять классы на основе прототипов с чистым, красивым синтаксисом. // define class Human class Human {..

    Как свинг-трейдеры могут использовать ИИ для больших выигрышей
    По мере того как все больше и больше профессиональных трейдеров и активных розничных трейдеров узнают о возможностях, которые предоставляет искусственный интеллект и машинное обучение для улучшения..

    Как построить любой стол
    Я разработчик программного обеспечения. Я люблю делать вещи и всегда любил. Для меня программирование всегда было способом создавать вещи, используя только компьютер и мое воображение...

    Обзор: Машинное обучение: классификация
    Только что закончил третий курс курса 4 часть специализации по машинному обучению . Как и второй курс, он был посвящен низкоуровневой работе алгоритмов машинного обучения. Что касается..

    Разработка расширений Qlik Sense с qExt
    Использование современных инструментов веб-разработки для разработки крутых расширений Вы когда-нибудь хотели кнопку для установки переменной в приложении Qlik Sense? Когда-нибудь просили..