如何在多租户SaaS应用程序中为每个租户管理不同的队列?

时间:2019-08-19 06:38:51

标签: laravel amazon-web-services queue multi-tenant saas

我们正在为奖励计划运行多租户SaaS应用程序

当前,我们在数据库中分别管理每个租户的队列

每个租户可以有一个通知,奖励和批量操作队列。

当前,我们在该租户的单个队列中管理每个队列

我们知道,这不是最佳方法,也不是最佳做法。

我们正在计划扩展应用程序,我们需要以最佳方式设置队列和队列工作器 >

任何建议都可以。 我们愿意将任何服务用于队列,例如SQS,Redis等。 我们需要为每个租户分配一个单独的队列。

[技术细节]

服务器:-AWS ec2

语言:-PHP

框架:-Laravel 5.6

数据库:-RDS Mysql

[吞吐量/可扩展性方面的要求]

  1. 我们有一些租户在一周或一天内有10万个工作,由于他们是电子商务商店,未来可能会增加。
  2. 我们每天至少有5-6名新租户。因此,我们还需要管理他们的队列。
  3. 每个租户的队列都应该是独立的,这样一个租户就不必先依赖其他租户的流程来完成工作。 (每个租户的流程应单独管理)。

[有关当前结构的更多详细信息]

请访问此问题,以在此处更详细地了解当前结构-> Click Here

1 个答案:

答案 0 :(得分:1)

Redis 对于初学者来说效果很好。易于配置和安装。 您还应该尝试 laravel horizo​​n 。您可以在config / horizo​​n.php上轻松地在地平线上配置队列,从那里您可以创建单独的通知,奖励,bulk_operations连接,您只需要在调度中指定即可。

ProcessPodcast::dispatch($podcast)->onQueue('processing');

您可以在https://laravel.com/docs/5.6/horizon

处查看laravel horizo​​n的官方文档

以及此处的队列和连接 https://laravel.com/docs/5.6/queues#customizing-the-queue-and-connection