运行 laravel 具有多个数据库的队列
running laravel queue with multiple database
我有 Laravel 5 个项目。这是一个多租户项目,所以我有一个包含多个数据库的文件夹项目。
当我使用 php artisan queue:listen
时,它只适用于当前的数据库设置。我使用 database
队列驱动程序,因此每个租户都有自己的通知 table。如何设置队列侦听器以检查所有数据库作业?
如果您想继续使用 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 或 beantalk。
我有 Laravel 5 个项目。这是一个多租户项目,所以我有一个包含多个数据库的文件夹项目。
当我使用 php artisan queue:listen
时,它只适用于当前的数据库设置。我使用 database
队列驱动程序,因此每个租户都有自己的通知 table。如何设置队列侦听器以检查所有数据库作业?
如果您想继续使用 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 或 beantalk。