запуск очереди laravel с несколькими базами данных


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

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

Author: patricus, 2016-12-25

1 answers

Если вы хотите продолжить использовать драйвер 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 или бобовый стебель.

 4
Author: patricus, 2016-12-25 06:49:49