Php 如何使用redis为Laravel 5中的多租户多数据库体系结构应用程序执行排队和缓存?

Php 如何使用redis为Laravel 5中的多租户多数据库体系结构应用程序执行排队和缓存?,php,laravel,redis,laravel-5,queue,Php,Laravel,Redis,Laravel 5,Queue,我正在使用Laravel开发一个多租户多数据库体系结构应用程序,这基本上意味着应用程序中的每个租户都有自己的数据库、自己的用户集、资源等 现在我尝试在应用程序中实现队列和缓存,然后我尝试使用redis实现这一点。示例代码如下所示: $mailer->send('emails.welcome', ['user' => $user], function ($message) use ($user) { $message->from("admin@admin.com", "A

我正在使用Laravel开发一个多租户多数据库体系结构应用程序,这基本上意味着应用程序中的每个租户都有自己的数据库、自己的用户集、资源等

现在我尝试在应用程序中实现队列和缓存,然后我尝试使用redis实现这一点。示例代码如下所示:

$mailer->send('emails.welcome', ['user' => $user], function ($message) use ($user) {
    $message->from("admin@admin.com", "Admin");
    $message->to($user->email, $user->first_name)->subject("Welcome!");
});
这是向注册用户发送欢迎电子邮件。但是队列将所有队列存储在同一个Redis实例中的同一个数据库中,据我所知,不同的租户电子邮件会混淆


如何连接到Laravel 5并更改队列行为,以便将每个租户的作业存储在单独的数据库中,或者存储关于特定作业所属租户的额外元信息?然后,我如何告诉Laravel在继续作业之前解析额外的元信息并连接到正确的租户数据库?

对于队列系统的适当工作,您需要在作业中使用自己的
\illights\Queue\SerializesModels
特性实现。Wheech将在
作业::\uu sleep()
作业::\uu wakeup()
上保存并初始化正确的数据库连接。 请看一看包装


对于缓存系统的适当工作,您需要使用一个前缀,该前缀取决于当前主机。看看开发人员建议如何实现这一点

这通常不是问题,因为队列只是一个队列。i、 e.其中的任务包含实际需要的数据,如果您想对队列进行“分类”以便更好地管理,您可以使用
onQueue
方法指定队列或
onConnection
指定队列

e、 g

您还可以按如下方式为特定连接创建队列,并将作业推送到该队列:

$tenant1Connection = Queue::connection('connection_name');
$tenant1Connection->pushOn('queue_name', $job)
如果需要避免正面,可以执行以下操作:

app('queue')->connection('connection_name')->pushOn('queue_name', $job);
app('queue')->connection('connection_name')->pushOn('queue_name', $job);