我有以下场景,需要按照 CQRS 模式来实现:
- 用户登录
- 用户输入一些保险详细信息
- 用户请求应用决定
- 用户查看决策结果
这看起来相当简单,但是我的问题是在步骤 3 和 4 之间,在步骤 3 中我发送了一个ApplyForDecision
命令将从承保服务获取决策,然后将具有该决策结果的事件发送到总线以供读取存储稍后使用它并使用决策结果更新视图表。
问题出在 UI 上,如何让用户知道正在应用决策,因为在 CQRS 中,读取模型不会“立即”更新,如何让 UI 显示决策正在进行中并将“很快” ' 到达?
我还需要让用户能够注销并重新登录,因为该决定可能尚未应用,如何使 UI 显示“待定决定屏幕”?
答案是立即引发一个事件,表明已申请该决策,更新读取数据库并立即重定向到待定决策屏幕,无论当时读取数据库是否已更新。静态文本“待决定,我们将联系您”或类似的内容。他们可以刷新或稍后返回,并且很可能会获得真实数据。然后,当决定做出后,您将有一个 DecisionMade 事件并相应地更新读取的数据库、发送电子邮件(无论何种情况)。
这就是您必须在 CQRS 中处理的最终一致性的权衡。通常,当我对表单上的域对象属性进行更改时,我会在后端执行其杂务时在用户收到的即时反馈中伪造它。是的,有点难看,但用户不知道。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)