CQRS - 通过命令立即一致地发送响应

inf*_*rno 9 architecture rest cqrs event-sourcing event-store

我有以下架构: 建筑 OFC.有端口和适配器,以及你能想象到的一切......

您有什么建议,如何通过即时一致性发送休息响应?我应该添加另一个事件总线并举办活动吗?(我猜投影必须发一些关于成功的事情.)

如何在这样的基于事件的系统中处理错误?(事件总线不是必需的,我可以解决与IoC容器的松散耦合,但我不认为通过这么多对象发送回调将是一个很好的解决方案.)

Mik*_*eSW 7

这并不困难,您可以直接从控制器调用命令处理程序,而不是发送命令.或者有一个服务方法来处理输入并返回一些东西.重要的是所有这些都是同步完成的(即你需要等到处理程序完成).域事件处理程序不受影响,它们可以是异步的.

如果您不想"混合"并希望始终使用相同的工作流程(如图中所述),事情会更复杂,您需要客户经常检查操作是否已完成.我认为更好的方法是灵活,因此,对于某些任务,您可以使用"旧"方式.域事件仍将生成和处理,该部分不会更改.你只是改变了'命令'的执行方式.

此外,值得一提的是,您不应期望事件处理程序的响应,如果它让您感觉更好,请使用"请求 - 响应"术语而不是命令响应.

顺便说一句,你没有以这种方式打破CQRS,只要你的域模型不用于进行查询,即你有不同的写入和读取模型,它就是CQRS.