我是CQRS的新手,我读过关于预测和投影仪的反应器,但我的资源并没有完全覆盖它。有人可以在事件采购中彻底定义反应堆,还是给我一个链接或书来阅读?我的主要问题是:
答案 0 :(得分:1)
投影是一个接收域事件并将其转换为列表,树,图形等操作的函数...
这里的想法是你希望语义域事件存储它们,并且能够重放它们,但是你需要对它们进行各种解释才能有效地查询它们。因此,您需要一个投影,表明对于给定视图,域事件X表示INSERT
或UPDATE
或DELETE
。
因此,投影基本上是域事件和CRUD操作之间的映射。您可能还会说投影是域事件的许多解释之一。
现在,可能需要响应与更新表无关的域事件的操作。例如,每当您收到userLoggedIn
事件时,您可能希望向用户发送电子邮件。它就像一个简单的,如果那样规则。这基本上就是你所谓的反应。您只需以某种自定义方式对域事件做出反应。
反应器(反应的组件)的结构因此非常类似于投影仪的结构。唯一的区别是反应堆不会更新读取模型,而是执行您想要的任意操作。
换句话说:投影是一种特殊的反应,它总是关于更新阅读模型。由于这是如此常见,你有一个专门的模式,但一般来说:每当你做一些事情来回应接收事件,这是一个反应。
如果没有更多细节,很难回答如何实施反应堆的问题。在wolkenkit,一个用于JavaScript和Node.js的CQRS和事件源框架,反应堆只不过是流量。流量可以是stateless flows或stateful flows,具体取决于它们是否包含状态。
一个简单的例子(当然特定于wolkenkit)可能如下所示:
'use strict';
const when = {
'userManagement.user.loggedIn' (event, mark) {
// ...
mark.asDone();
}
};
module.exports = { when };
(免责声明:我是wolkenkit的作者之一,所以请带上一些盐的例子。)