【发布时间】:2017-05-10 03:48:35
【问题描述】:
我有 Laravel 5 项目。这是多租户项目,所以我有一个包含多个数据库的文件夹项目。
当我使用php artisan queue:listen 时,它只适用于当前的数据库设置。我使用database 队列驱动程序,因此每个租户都有自己的通知表。如何设置队列侦听器来检查所有数据库作业?
【问题讨论】:
标签: php laravel laravel-5 queue multi-tenant
我有 Laravel 5 项目。这是多租户项目,所以我有一个包含多个数据库的文件夹项目。
当我使用php artisan queue:listen 时,它只适用于当前的数据库设置。我使用database 队列驱动程序,因此每个租户都有自己的通知表。如何设置队列侦听器来检查所有数据库作业?
【问题讨论】:
标签: php laravel laravel-5 queue multi-tenant
如果您想继续使用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。
【讨论】:
redis 时,如何查看当前待处理的工作或失败的工作,如database。所以我知道是否有问题或某些工作没有按预期工作?顺便说一句,我使用 laravel forge 进行服务器设置。
failed_jobs 表中。