主题
队列
在多租户系统中,队列默认驱动使用database
, 具体配置如下:
php
// config/tenancy.php
[
/**
* Queue 租户配置
*/
'queue' => [
// Queue 队列
'connections' => [
// 主域
'central' => [
'driver' => 'database',
'connection' => env('DB_CONNECTION', 'mysql'),
'table' => 'jobs',
'queue' => 'default',
'retry_after' => 90,
'central' => true, // 主域一定要配置这个
],
// 租户
'tenant' => [
'driver' => 'database',
'table' => 'jobs',
'connection' => env('DB_CONNECTION', 'mysql'),
'queue' => 'tenant',
'retry_after' => 90,
],
],
]
]
然后使用下面的命令创建租户的队列任务
php
php artisan catch:tenant:job TenancyTest
这个命令会在 \app\Jobs
目录创建一个名为 TenancyTest.php
得任务文件,内容如下:
php
namespace App\Jobs;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Queue\Queueable;
class TenancyTest implements ShouldQueue
{
use Queueable;
/**
* Create a new job instance.
*/
public function __construct()
{
$this->onConnection('tenant');
}
/**
* Execute the job.
*/
public function handle(): void
{
//
}
}
具体业务可以在 handle
, 租户包会通过任务上下文来识别租户。这个无需关心。