【发布时间】:2021-05-08 01:47:09
【问题描述】:
我在考虑解决我的问题时遇到了一个奇怪的案例。
快速回顾一下:我正在使用带有 CQRS 的事件存储,并且我有 2 个名为“组”和“用户”的聚合。
基本上,用户会定义一些特征,例如他的地区、年龄和一些兴趣。
然后他可以选择“匹配”与同一地区、大约相同年龄和相同兴趣的组。
现在的情况是:“匹配”部分应该完全在后端发生,这可能是一个长时间运行的过程,但对于客户端来说,它只是对端点的 1 次调用,最终结果应该是他与一个组匹配.
所以对于这种情况,我必须查询具有相同区域、相同年龄切片的组,兴趣在我的查询中并不重要。我知道有一个群组列表,媒人会根据群组和用户之间的共同兴趣给每个群组打分。评分最高的组将加入。
同样,使用 CQRS 和 ES,我的问题是这种情况似乎是查询和命令之间的混合,并且将查询混合到匹配命令中似乎违背了 CQRS 的目的。
查询多个组并针对我的写入端(事件存储)过滤它们也是一个坏主意,因为必须重新构建聚合并将它们加载到内存中才能过滤掉它们。
所以我有点卡在这里,有些东西告诉我长时间运行的进程/传奇可能是我的问题的答案,但我不明白我仍然不会破坏查询和命令的混合我的传奇,因为传奇基本上是一系列命令/事件。
我该如何处理这种特殊情况?不需要真正的代码,一个让我开始的概念性解决方案是完美的。
【问题讨论】:
-
一个用于github.com/ddd-cqrs-es/slack-community 或软件工程松弛?
标签: domain-driven-design backend cqrs eventstoredb