在命令处理程序中从readmodel请求数据

时间:2011-11-28 19:44:10

标签: design-patterns domain-driven-design cqrs ncqrs

我需要向管理员列表发送电子邮件作为回复 从UI发送的命令。需要通知的管理员是 从针对读取模型的查询中检索。

目前 - 根据我的理解,我只有一个 选项:在发送命令和添加之前收集所需的管理员 他们(姓名/电子邮件对)到命令。

或者 - 从命令处理程序到读取是否可以接受 模型?感觉不对,但我真的没有看到任何其他方式 这样做?

3 个答案:

答案 0 :(得分:0)

您没有说明如何实现命令端。我通常在命令处理程序中提供此信息。然后,我根据添加到命令的ID查询数据源中的电子邮件和名称。您无需通过域模型来执行此操作。如果您没有在命令端提供数据,我认为通过服务从读取端收集数据没有太大问题。我不会从域模型中做到这一点。

答案 1 :(得分:0)

您无法从域中访问读取模型,因为您的域是暂时的,而不是您的读取模型。您需要获得在命令时获取的电子邮件列表:)

您可以,或者在触发邮件的命令中包含管理员电子邮件列表,然后将其作为事件和时间段保留,或者您可以让您的域实体实例化其他域实体以获取列表管理员电子邮件

希望得到这个帮助。

答案 2 :(得分:0)

假设你的命令正在抛出事件......

对我而言,正确的方法是拥有一个单独的事件处理程序来捕获命令的事件并触发发送电子邮件。您的事件处理程序将查询现有的读取模型以获取管理员列表。

保持简单,因为您的命令处理程序不需要知道向管理员发送电子邮件的需要。

您可以在概念上为此设置一个单独的系统,它还处理您的管理员创建/删除的事件,存储在特定的读取模型中,纯粹是为了保存管理员列表发送电子邮件到。