【发布时间】:2017-04-18 21:04:34
【问题描述】:
我目前遇到一个问题,希望您能在这里帮助我提出一些想法或最佳实践...
假设我有一个使用事件溯源和 CQRS 的应用程序。我有
- 一个装有数字的绿色罐子
- 一个装有数字的红锅
- 我定义的设置,即应在 UI 中显示的罐数。
- 包含要显示的数字的计算结果
我的应用程序的当前状态是
- 红锅:10
- 绿锅20个
- 设置:红色
- 结果:10(红罐值)
我有一个订阅 Red Pot 服务、Green Pot 服务和设置服务的计算服务。我有一个 View Updater 服务,它另外订阅了 Calculation 服务并根据任何更改更新读取模型。
现在以下事件正在发生:
- 绿锅:25
- 环境:绿锅
View Updater 服务今天有点忙,更新视图模型有一些延迟。
计算服务处理 Green Pot 事件。它从读取模型(仍设置为红色)中获取设置并且什么都不做。
之后,计算服务处理设置事件。它从读取读取模型中获取绿色值(仍然是 20)并发送一个新事件(结果:20)
之后,View Updater 会处理这两个事件并更新读取模型。
在这种情况下,我的应用程序不一致 - 甚至最终都不一致。
有任何想法如何处理这样的事情吗?感谢您的任何想法:-)
【问题讨论】:
-
您应该将事件的名称更改为更明确,例如
GreenPotUpdated、RedPotUpdated和SettingsChanged
标签: cqrs event-sourcing consistency