CQRS - 为特定读取生成查看计数

CQRS - Generating view counts for specific reads

如何记录给定资源被阅读了多少次?您可以在读取模型本身上执行此操作,但是如果您在需要该信息的命令端(微服务)具有相同的逻辑怎么办? readmodels 可以将命令发送回微服务以记录那个吗?这些年来,我从未见过一个涵盖 readmodels generations 命令的示例,但我认为我无法摆脱它。你怎么看?

Is it ok for the readmodels to send commands back to the microservices to have this recorded that?

可以从任何地方向您的服务发送命令;您可能不希望它是同步的;但是,例如,记录某人请求查看的内容从根本上没有错。

也就是说,访问读取模型通常是安全的,与 HTTP 使用的类似。破坏性副作用通常不会内置到读取模型的设计中。

恕我直言,这个问题的答案取决于计数器是否与您的域相关。您说它与写入模型相关这一事实暗示它实际上是相关的。

如果它与域相关,我会简单地更新读取模型中每次访问的计数器。期间.

如果它实际上 与域相关,那么这意味着您需要触发另一个命令,然后影响某种计数器聚合(或者您对此建模) .这意味着只有两个选项可以发送此命令:在客户端,或从读取模型本身。

为了确保发送命令始终发生,无论哪个客户端访问您的读取模型,我实际上都会将其添加到读取模型中。对于写入模型,这非常好,因为它不关心它接收到的命令来自何处。

所以,长话短说:是的,没关系:-)