запуск очереди laravel с несколькими базами данных
У меня есть проект Laravel 5. Это мультитенантный проект, поэтому у меня есть проект одной папки с несколькими базами данных.
Когда я использую php artisan queue:listen
, он работает только с текущей настройкой базы данных. Я использую драйвер очереди database
, поэтому у каждого арендатора есть своя таблица уведомлений. Как настроить прослушиватель очереди для проверки всех заданий базы данных?
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 или бобовый стебель.