如何选择使用带有事件源的CQRS在偶尔连接的系统上将哪些事件发送给用户?

问题描述 投票:0回答:1

我正在构建一个Web应用程序,用户可以编辑和共享笔记。用户应连接到具有角色(所有者,读取,读写)的笔记。这是一个偶尔连接的系统,所以我选择使用CQRS和事件源进行同步。按照Greg Young's presentation [36:20 - 38:40],流程如下:

  1. 客户端在脱机时进行更改。
  2. 客户端连接到Internet。
  3. “存储转发”发送客户端脱机时发生的事件。
  4. 客户端将本地事件与接收到的事件进行比较,并进行合并,以确定要保留的命令。然后更新本地视图模型。
  5. 客户端将存储的命令(离线创建)发送到服务器。
  6. 服务器执行命令并生成存储在事件存储中的事件。
  7. “存储并转发”保留每个用户感兴趣的事件,直到用户重新联机。

问题是:“存储和前言”如何决定应向每个用户发送哪些事件?

显然,发送所有事件将损害其他用户的安全性。

cqrs event-sourcing occasionallyconnected
1个回答
0
投票

由于您的客户端知道它显示的聚合,所以它只能告诉后端“嘿,自[timestamp]起,聚合ID [...]是否有事件?”。

reSolve框架使UI保持反应状态的方式-客户端为特定的aggregateId订阅事件,并通过websocket实时接收它们。

因此,您的问题的一个答案可能是“让用户询问他感兴趣的事件(aggregateId)”

© www.soinside.com 2019 - 2024. All rights reserved.