我有以下设置:
HTTP 请求到达 REST 端点,我在我的应用程序服务中收到它。
应用程序服务将请求映射到命令 C1 并将其转发到使用commandGateway.sendAndWait(new C1(restPostBody));.
从 repo 加载聚合,应用新命令并生成新事件并保存到存储。
此时,我需要丰富此事件并将其用作 REST 调用的响应。
到目前为止,我可以看到以下选项:
使用视图投影仪,并投影新事件以创建可以在 REST 调用中作为响应转发的视图模型。我在这里我需要使用queryGateway.subscriptionQuery(...并sqr.updates().blockFirst()等待投影仪处理事件,然后创建响应。另外,我想这应该是同步的,因为如果系统在将事件存储到数据库和将投影存储到数据库之间失败,投影可能会不同步?
在从聚合发布事件后使用一些事件丰富器并向其添加所需的属性并添加对 REST 调用的响应。这类似于 Projection,但在这种情况下,我不会将其保存到 DB,因为我需要数据的唯一时间是在发出命令时对 REST 端点的响应。这绝对应该是同步的,因为如果出现故障,我会失去响应。在异步的情况下 - 我需要让 Aggregate 处理重复事件,并且仍然向事件丰富器发出事件但不存储到数据库。这似乎使事情变得复杂了很多。
是否有与此相关的最佳实践?
千万里不及你
LEATH
随时随地看视频慕课网APP
相关分类