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

时间:2018-01-08 13:10:15

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

  1. 我有多租户申请。
  2. 每个租户都有多个操作(sync_customers,sync_metafileds,install_code,verify_code等等),我需要进行API调用。
  3. API调用每秒限制2次呼叫(一分钟内最多41次呼叫)。
  4. 案例1.

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

    我需要的是

    1. 不同租户的不同队列。
    2. 队列需要优先。
    3. 如果任何队列进程之间有更高优先级的任务。首先完成它并继续处理挂起的任务。
    4. 如果没有其他待处理任务,那么只需优化服务器资源并关闭该队列。
    5. 我正在使用AWS和laravel v5.x与php版本7.x

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

      提前致谢。

1 个答案:

答案 0 :(得分:0)

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

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

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

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

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