在CQRS中如何使用NServiceBus来更新命令和查询存储
本文关键字:命令 更新 查询 存储 NServiceBus CQRS 何使用 | 更新日期: 2023-09-27 18:17:54
在CQRS中,如何确保命令处理程序以事务方式更新写存储和读存储?
我不确定这两个步骤是否应该是一个事务?还是你依赖于最终的一致性?意味着读存储最终会更新?
使用NServiceBus 5或6的常见方法是什么?
在我们的应用程序中,我们有IRepository<T>
(Add, Update)作为命令端来更新Sql Server数据库。查询端很简单。实体框架DbContext
之上的数据库和facade。
命令端的步骤如下:
- MVC控制器接收来自View的数据
- 控制器动作创建一个Command/Message对象并将其发送到总线。
- 适当的命令处理程序创建适当的域对象并对其进行验证。 如果有效,使用IRepository插入或更新数据库。
- 现在什么?
这是否必须是NServiceBus中的Saga,其中步骤1和2更新命令存储和读取存储?
谢谢。
我看到的流程如下:
- 控制器接收到一个动作并在命令总线中发出一个命令
- 正确的命令处理程序被触发,写模型得到更新
- 在命令处理程序中,触发事件
- 正确的事件处理程序被触发,读取模型得到更新
所以更新读模型是在事件处理程序中完成的-因此最终的一致性
希望这对你有帮助!祝你好运!