【问题标题】:How to queue APIs requests with RabbitMQ如何使用 RabbitMQ 对 API 请求进行排队
【发布时间】:2018-12-05 18:53:12
【问题描述】:

我想对使用 API 向服务器发送一些数据的移动应用程序发出的请求进行排队。

现在的场景是这样的:

  1. 移动应用发送带有一些数据的请求
  2. 我需要获取数据、验证数据(几个数据库查询)并保存到数据库中的几个表中。
  3. 如果验证失败,我需要向移动应用返回 OK 响应或带有错误列表的错误请求。

现在,如果我在 3 秒内收到 1000 个这样的请求,我的服务器就会崩溃。

我想使用 RabbitMQ 对这些请求进行排队。但是我应该怎么做呢? RabbitMQ 收到消息后,我无法发送 OK,因为我不知道验证是否会通过。所以移动应用会等到 RabbitMQ 消息被正确消费?

【问题讨论】:

    标签: symfony rabbitmq


    【解决方案1】:

    这可能是您的问题的解决方案:

    1. 客户端发送请求
    2. 服务器对请求进行排队,并生成一个属于排队请求的唯一标识符,然后发送包含生成的标识符的响应,状态码为 202(已接受),表示请求已在服务器上排队或提交,但存在还没有回复。
    3. 客户端订阅消息代理上生成的标识符
    4. 在服务器上完成排队请求后,它将根据生成的请求标识符向消息代理发布响应
    5. 客户端将收到关于订阅标识符的已发布响应

    提示:

    • 我使用 EMQTT 作为消息代理。另一种选择是 Rabbitmq MQTT 插件

    【讨论】:

      猜你喜欢
      • 2021-08-24
      • 2018-10-13
      • 2011-06-14
      • 2021-11-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-10
      • 1970-01-01
      相关资源
      最近更新 更多