使用多个数据库运行laravel队列

mar*_*ndt 4 php queue multi-tenant laravel laravel-5

我有Laravel 5项目。这是一个多租户项目,所以我有一个包含多个数据库的文件夹项目。

当我使用时php artisan queue:listen,它仅适用于当前数据库设置。我使用database队列驱动程序,因此每个租户都有自己的通知表。如何设置队列侦听器以检查所有数据库作业?

pat*_*cus 5

如果要继续使用database驱动程序,建议您设置另一个数据库,其中包含所有排队的作业和失败的作业。

尽管它不在配置中或文档中未提及,但在查看代码之后,看起来您应该能够向connection队列配置中添加参数,然后队列将与该连接指定的数据库进行交互。

因此,在您的中config/database.php,为您的队列数据库定义一个新连接:

'connections' => [
    // your existing connections

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

然后,在中config/queue.php,告诉数据库队列使用新连接:

'connections' => [
    'database' => [
        'driver' => 'database',
        'connection' => 'queue', // connection name from database config
        'table' => 'jobs',
        'queue' => 'default',
        'retry_after' => 90,
    ],
]
Run Code Online (Sandbox Code Playgroud)

另一个选择是移动到另一个队列驱动程序。设置redis,sq或beantalk。