【问题标题】:Laravel how can we manage different queue for each tenant in multi tenant application?Laravel 如何在多租户应用程序中为每个租户管理不同的队列?
【发布时间】:2018-06-17 11:21:33
【问题描述】:
  1. 我有多租户应用程序。
  2. 每个租户都有多个操作(sync_customers、sync_metafileds、install_code、verify_code 等),我需要对其进行 API 调用。
  3. API 调用限制为每秒 2 次调用(一分钟最多 41 次调用)。

案例一。

  • i.假设一个租户有 10,000 个客户。同步过程是 正在运行。
  • 同时租户添加对 install_code 的请求。 (install_code 需要最少 16 次 API 调用。)
  • 现在我可以停止 sync_customers 并根据优先级启动 install_code,或者只是将所有调用添加到队列中。

我需要的是

  1. 不同租户的不同队列。
  2. 队列需要优先。
  3. 如果更高优先级的任务出现在任何队列进程之间。请先完成它,然后继续处理挂起的任务。
  4. 如果没有其他待处理任务,则只需优化服务器资源并关闭该队列。

我正在使用 AWS 和 laravel v5.x 以及 php 版本 7.x

希望每个人都明白我的意思。

提前致谢。

【问题讨论】:

  • 您可以使用不同的队列名称并设置不同的优先级。检查laravel.com/docs/5.5/queues
  • 但是 laravel 进程如何排队?我需要为 diff 设置 numproc=x 吗?排队?我是主管设置的新手。

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


【解决方案1】:

我创建了一个自定义命令 queue:work_stores 带有参数 {user_id}。

哪个运行队列:使用参数 --once=true

$this->call('queue:work', [
  "--once" => true,
  "database"
]);

一个标志,用于跟踪当前队列:work_stores 是否正在运行。

查看完整代码https://gist.github.com/little-isaac/a6d70c82f372406f827fb3b399745c8e

【讨论】:

    猜你喜欢
    • 2019-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-05
    • 1970-01-01
    • 1970-01-01
    • 2014-11-01
    • 2017-02-16
    相关资源
    最近更新 更多