CQRS – 最终一致性

我有以下场景需要按照CQRS模式实现:

>用户登录
>用户输入一些保险详细信息
>用户要求决定是否适用
>用户查看决策结果

这似乎相当简单,但我的问题是在步骤3和4之间,在步骤3我发送一个ApplyForDecision命令,它将从承保服务得到一个决定,然后一个带有该决定结果的事件被发送到BUS进行读取存储以便稍后使用它并使用决策结果更新视图表.

问题出在UI上,我如何让用户知道决定正在应用,因为在CQRS中,读取模型没有“直接”更新,我如何让UI显示决策正在进行中并且很快就会’到了吗?

我还需要让用户能够注销并重新登录,因为该决定可能尚未应用,如何让UI显示“待决决策屏幕”?

答案是立即引发一个事件,指示已经应用了决定,更新读取数据库并直接重定向到您的待决决策屏幕,无论读取数据库是否已经被更新.静态文本’将要与您联系的决定’或类似的内容.他们可以刷新或稍后回来,更有可能获得真实的数据.然后,当决​​定已经确定时,您有一个DecisionMade事件并更新读取数据库,相应地发送电子邮件,无论情况如何.

这是您在CQRS中必须处理的最终一致性的权衡.通常,当我对表单上的域对象属性进行更改时,我会在后端执行其杂务时在用户获得的即时反馈中伪造它.是的,有点难看,但用户不知道.

相关文章
相关标签/搜索