我们已经开始实现我们的整体到微服务架构。我们已经发现,即使驱动消息队列也比REST API持久。但是,我们遇到了一个基本问题。
例如,在我们的网站上,用户创建了一个订单,该订单随HTTP请求发送到我们的API网关,并将请求推送到队列中。某些操作继续进行,结果被推回队列。
现在,我无法长时间保留此其余API请求。我们没有实现这一点的线索。任何帮助是极大的赞赏。如何将同步HTTP请求API调用转换为异步响应?
答案 0 :(得分:1)
用户交互不应排队。用户对产品的要求,必须满足。没有两种方法。另一方面,队列可以帮助您管理未积极参与用户的后端流。 现在,订单很棘手,当用户下订单时,后端会发生很多事情。 但是,您所需要做的只是生成订单ID,其他事情可能会延迟。
现在进行设计,我们可以先下订单,然后查看如何实现此目标(如果我们可以做到的很好),否则我们将回信给用户。 如果看到用户的订单被取消,对于用户来说并不是一个很好的体验,但是如果您可以确保取消的次数减少,那么效果很好。您即时生成了orderid,并推送了带有orderID的请求,以便稍后进行处理。
为简单起见,您需要考虑订单需要做的重要事情。 (需要将其减少到最低限度),然后进行同步或将其放入队列,但要确保确保maxTimeInQueue并弹出这些请求并检查状态以回复用户。 下订单时,您会进入接受付款明细的阶段,在此阶段,您可以抽出一些时间来快速检查库存等内容。 同样,您需要研究自己的流程,从同步呼叫开始,然后开始消除不需要的呼叫,并减少某些呼叫的额外ms。只要用户是循环,就可以避免队列。
从技术上讲,如果http请求进入队列,那么所有请求都进入队列。如果您确实需要使用队列,可以通过删除使处理速度慢但又超时的东西,快速失败并重新查看订单(流程)行程
来使用队列。