【发布时间】:2017-10-10 04:24:22
【问题描述】:
我们正在构建一个微服务应用程序,客户可以在其中创建项目。下图展示了这个过程的技术流程:
我的问题:API 网关应该向客户端返回什么 HTTP 响应(步骤 1。)?
我最初的想法是返回 202,但问题是我还不知道 Location (/projects/{id}),因为 project 的 id 将是在项目管理服务处创建。
【问题讨论】:
-
何时生成 ID,在创建命令之前/之后(即 GUID)或在持久化
project之后(即自动递增的主键)? -
项目ID由项目管理服务生成。所以在它接收到命令之后,在它发布事件之前。
-
太糟糕了,这让事情变得复杂了。所以,当你向客户端返回响应时,你不知道项目的 ID 和命令的状态是什么,对吧?
-
没错。我们唯一知道的是命令被确认。
-
因此,您将需要一个由 api 网关生成并返回给客户端的
command id,如下所示:/pending/commands/1234-abcd-5678-efgh
标签: http asynchronous architecture microservices event-driven