代码之家  ›  专栏  ›  技术社区  ›  S Meaden

如何在REST客户端和REST服务器之间插入RabbitMQ?

  •  0
  • S Meaden  · 技术社区  · 6 年前

    如果我开发一个托管在Apache中的REST服务和一个服务GET、PUT、DELETE、PATCH的Python插件;该服务由Angular客户端(或其他REST交互浏览器技术)使用。那么,我如何使用RabbitMQ(AMQP)使其可扩展?

    潜在解决方案#1

    • 多个Apache仍然面临浏览器的HTTP调用。
    • 每个Apache实例都使用AMQP插件,然后将消息发布到队列中
    • Python微服务监控队列并拉取消息,为其提供服务并返回响应
    • 响应传递回Apache插件,Apache反过来生成HTTP响应

    这是否意味着Python微服务不再有任何HTTP服务器代码。这将大大改变该组件。也许最好提前决定是否要使用此模式,因为似乎删除任何HTTP服务器代码都是一项任务。

    其他潜在的解决方案?我真的很困惑,我们应该如何采用一个经典的REST服务器组件,并将其升级为可扩展的RabbitMQ/AMQP,同时尽量减少中断。

    0 回复  |  直到 6 年前
        1
  •  2
  •   Joran Beasley    6 年前

    我建议将wsgi切换到asgi(nginx可以在这里提供帮助),我不知道为什么你认为rabbitmqs是解决你问题的方法,因为你所描述的似乎都不能通过使用这种方法来解决。

    据我所知,apache不支持asgi,但它允许服务器继续工作,并且在它工作的同时,它可以继续为传入的新请求提供服务。(过于简化)

    如果出于任何原因,你真的想使用jobworkers(rabbitmq等),那么我建议向用户返回一个“令牌”(实际上只是job_id),然后他们可以使用该令牌进行调用,它将报告当前的作业状态或结果

    推荐文章