如果我开发了一个托管在Apache中的REST服务和一个Python插件,它的服务是GET、PUT、DELETE、PATCH;而这个服务是由一个Angular客户端(或其他REST交互浏览器技术)消费的。 那么如何用RabbitMQ(AMQP)使其具有可扩展性?
潜在的解决方案#1
这是否意味着Python微服务根本不再有任何HTTP服务器代码。 这将使该组件发生很大的变化。 也许最好事先决定是否要使用这种模式,因为看起来要撕掉任何HTTP服务器代码都是一项任务。
其他潜在的解决方案? 我真的很困惑,我们应该如何将一个经典的REST服务器组件升级到可扩展的RabbitMQAMQP,并将中断降到最低。
我建议把wsgi换成asgi(nginx可以在这里提供帮助),我不知道为什么你认为rabbitmq是你问题的解决方案,因为你所描述的一切似乎都不能通过使用这种方法来解决。
据我所知,apache不支持asgi,但它允许服务器去工作,当它工作时,它可以继续服务于新进来的请求。(严重过度简化)
如果不管出于什么原因,你真的想使用job worker(rabbitmq等),那么我建议返回给用户一个 "token"(其实只是job_id),然后他们可以用这个token调用,它将报告当前的job状态或结果。