CQRS / ES非规范化器

问题描述 投票:3回答:1

我正在开发一个使用事件采购和CQRS的发票Web应用程序。

我有2个非规范化器用于不同的查询(一个用于发票摘要列表,一个用于包含完整详细信息的单个发票)。 我发现很奇怪我需要为这两个非规范化器复制很多逻辑 - 例如,听取改变总数,小计,税收等的事件。

我最终在消息传递总线上传递了包含真实计算数据的聚合本身,而不仅仅是事件,并且非规范化器会监听它而不是事件。

这使我更简单,但似乎与模式不同。 在我读过的任何文章中都没有提到这种方法。

我喜欢只传递总线上的事件并让每个非规范化器对它所需要的东西作出反应的想法,但在实践中它感觉更麻烦。

我很想听听你的想法。

谢谢你的帮助!

domain-driven-design cqrs event-sourcing system-design
1个回答
2
投票

正如上面评论中guillaume31所建议的那样,您可以简单地使用特殊事件(如NewTotalComputed丰富您的域模型。 根据事件的数量,这可能会很快混乱您的域模型。

或者,您可以将计算逻辑重构为从域模型(聚合根)和读取模型使用的特殊策略类。

© www.soinside.com 2019 - 2024. All rights reserved.