У меня есть проект Laravel 5. Это мультитенантный проект, поэтому у меня есть проект одной папки с несколькими базами данных.

Когда я использую php artisan queue:listen, он работает только с текущими настройками базы данных. Я использую драйвер очереди database, поэтому у каждого арендатора есть своя собственная таблица уведомлений. Как настроить прослушиватель очереди для проверки всех заданий базы данных?

4
martiendt 25 Дек 2016 в 06:01

1 ответ

Лучший ответ

Если вы хотите продолжить использование драйвера database, я бы предложил создать другую базу данных, которая будет содержать все ваши задания в очереди и неудачные задания.

Хотя его нет в конфигурации и нет в документации, после просмотра кода, похоже, вы сможете добавить параметр connection в конфигурацию очереди, и тогда очередь будет взаимодействовать с база данных, указанная этим соединением.

Итак, в вашем config/database.php определите новое соединение для вашей базы данных очереди:

'connections' => [
    // your existing connections

    'queue' => [
        'driver' => 'mysql',
        'database' => 'your-queue-database',
        // rest of connection information (host, port, etc)
    ],
],

Затем в своем config/queue.php скажите очереди базы данных использовать новое соединение:

'connections' => [
    'database' => [
        'driver' => 'database',
        'connection' => 'queue', // connection name from database config
        'table' => 'jobs',
        'queue' => 'default',
        'retry_after' => 90,
    ],
]

Другой вариант - перейти к другому драйверу очереди. Настройте redis, sqs или beanstalk.

5
patricus 25 Дек 2016 в 09:49
Привет, спасибо за ответ ... оба работают, но когда я использую redis, как увидеть текущую ожидающую работу или неудачную, как в database. чтобы я знал, что-то не так или какая-то работа работает не так, как ожидалось? Кстати, я использую laravel forge для настройки сервера.
 – 
martiendt
26 Дек 2016 в 17:02
Независимо от того, какой тип очереди вы используете, невыполненные задания будут сообщаться в таблицу failed_jobs в вашей базе данных, когда они превышают максимальное количество попыток, разрешенное работником очереди.
 – 
patricus
27 Дек 2016 в 10:22
Итак, когда я решаю использовать Redis, мне также нужно настроить свою базу данных очереди? хорошо, спасибо @patricus, я попробую
 – 
martiendt
28 Дек 2016 в 04:07