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