gpt4 book ai didi

php - 如何在 Laravel 5 中使用 Redis 为 Multi-Tenancy 多数据库架构应用程序执行排队和缓存?

转载 作者:IT王子 更新时间:2023-10-29 00:06:14 28 4
gpt4 key购买 nike

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

现在我正在尝试在应用程序中实现队列和缓存,然后我正在尝试为此使用 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 在继续工作之前解析额外的元信息并连接到正确的租户数据库?

最佳答案

为了队列系统的适当工作,您需要在作业中使用您自己的 \Illuminate\Queue\SerializesModels 特性实现。 Wheech 将在 Job::__sleep()Job::__wakeup() 上保存并初始化正确的数据库连接。看看TenantAwareJob traithyn/multi-tenant包。

为了使缓存系统正常工作,您需要使用取决于当前主机的前缀。看看如何hyn/multi-tenant开发人员建议实现这一点。

关于php - 如何在 Laravel 5 中使用 Redis 为 Multi-Tenancy 多数据库架构应用程序执行排队和缓存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34310694/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com