7

我正在开发 CQRS/事件存储系统。目前,我使用的模式是命令同步。也就是说,在命令完成之前,用户界面不会将操作显示为已完成,并且会向用户显示成功/失败。在命令执行期间,所有生成的事件(例如,在聚合根 Y 上发生的动作 X)都存储在持久存储中。

我读过的所有关于 CQRS 的描述都实现了命令存储。我想知道在我的情况下是否需要这样做。

另一个注意事项 - 有很多长时间运行的命令类型操作,因此我将操作分解为一个生成事件的命令,然后这些事件依次发出更多命令。这些命令是幂等的,基于聚合根的状态。我不知道这会如何影响答案,但值得指出。

4

2 回答 2

8
  1. 回归测试在每次开发迭代之后,您可以从生产环境中获取命令日志,重新执行它并将生成的事件流与生产环境中的事件流进行比较。如果它们不同-您的逻辑中有回归。

  2. 消息流可视化和分析。

于 2012-04-19T06:44:10.827 回答
4

我见过的没有事件溯源的 Cqrs 示例是存储系统状态的常用关系数据库,而不是显示数据状态如何产生的事件。“命令采购”对我来说是一个新概念,并且似乎不正确,因为命令处理程序会随着时间而改变。对命令处理程序逻辑的任何更改都可能导致命令在重放时失败。重播事件没有这个问题,因为您的对象属性是直接设置的。

于 2012-04-18T21:16:15.157 回答