首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Microservices异步操作HTTP响应

Microservices异步操作HTTP响应
EN

Stack Overflow用户
提问于 2017-05-11 08:53:18
回答 1查看 742关注 0票数 2

我们正在构建一个微型服务应用程序,客户可以在其中创建项目。下图显示了这一过程的技术流程:

我的问题是:网关应该向客户端返回什么HTTP响应(步骤1.)?

我最初的想法是返回202分,但问题是我还不知道Location (/projects/{id}),因为项目的id将在项目管理服务中创建。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-11 19:13:30

考虑到新创建的project实体的is在请求时不知道(即它是在插入数据库之后生成的),您确实无法为project资源生成url。

相反,您可以在发送到总线之前将ID (即1234-abcd-5678-efgh)分配给命令,并跟踪它在API网关本身上的执行状态。然后,您可以使用命令执行状态端点(如/commands/1234-abcd-5678-efgh )来响应客户机,在那里它可以通过轮询进行查询。

另一种方法是使用另一个服务,它将保留和交付唯一的it,但是您必须对它进行阻塞调用,这会损害可伸缩性。或者,您可以在API网关本身(位于同一节点上)内承载此服务,以尽量减少延迟。此外,在项目创建失败的情况下,可能会丢失一些ID,但可以通过在这些情况下释放这些ID来弥补这种风险(从而增加了体系结构的复杂性)。

第三种解决方案可以是使用project代理ID,如GUID,指定为命令中包含的project属性,其目的是使用只能在进程的预创建阶段使用的备用标识。然后,对客户机的响应可以是这样的:/projects/by-guid/1234-abcd-5678-efgh,在创建project之后,对这个urlGET将永久地重定向到最终的项目url。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43910795

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档