cqrs – 如何确保在最终一致的系统中一致的客户端读取?

我正在深入研究CQRS,我正在寻找有关如何在最终一致系统中解决客户端读取的文章.例如,考虑用户可以将商品添加到购物车的网上商店.如果命令“AddItemToCart”的实际处理是异步完成的,如何确保客户端显示购物车中的项目?我理解调度命令异步和基于域事件更新读取模型异步的原则,但我没有看到如何从客户端角度处理它.
有几种不同的方法可以做到这一点;

等待用户直到一致

只需轮询服务器,直到更新读取模型.这与Ben所展示的相似.

通过2PC确保一致性

你有一个支持DTC的队列;并且您的命令首先放在那里.然后他们;执行,发送事件,读取模型更新;所有内部交易.虽然你没有用这种方法获得任何东西,所以不要这样做.

愚弄客户

将读取的模型放在客户端的本地存储中,并在发送相应的事件时更新它们 – 但您仍然期待此事件,因此您已经更新了购物车的javascript视图.

相关文章
相关标签/搜索