什么是事件采购中的反应堆/反应?

时间:2017-10-27 07:51:52

标签: cqrs event-sourcing reactor

我是CQRS的新手,我读过关于预测和投影仪的反应器,但我的资源并没有完全覆盖它。有人可以在事件采购中彻底定义反应堆,还是给我一个链接或书来阅读?我的主要问题是:

  • 什么是反应堆?
  • 反应堆的结构是什么?
  • 我们如何实施反应堆?

1 个答案:

答案 0 :(得分:1)

投影是一个接收域事件并将其转换为列表,树,图形等操作的函数...

这里的想法是你希望语义域事件存储它们,并且能够重放它们,但是你需要对它们进行各种解释才能有效地查询它们。因此,您需要一个投影,表明对于给定视图,域事件X表示INSERTUPDATEDELETE

因此,投影基本上是域事件和CRUD操作之间的映射。您可能还会说投影是域事件的许多解释之一。

现在,可能需要响应与更新表无关的域事件的操作。例如,每当您收到userLoggedIn事件时,您可能希望向用户发送电子邮件。它就像一个简单的,如果那样规则。这基本上就是你所谓的反应。您只需以某种自定义方式对域事件做出反应

反应器(反应的组件)的结构因此非常类似于投影仪的结构。唯一的区别是反应堆不会更新读取模型,而是执行您想要的任意操作。

换句话说:投影是一种特殊的反应,它总是关于更新阅读模型。由于这是如此常见,你有一个专门的模式,但一般来说:每当你做一些事情来回应接收事件,这是一个反应。

如果没有更多细节,很难回答如何实施反应堆的问题。在wolkenkit,一个用于JavaScript和Node.js的CQRS和事件源框架,反应堆只不过是流量。流量可以是stateless flowsstateful flows,具体取决于它们是否包含状态。

一个简单的例子(当然特定于wolkenkit)可能如下所示:

'use strict';

const when = {
  'userManagement.user.loggedIn' (event, mark) {
    // ...
    mark.asDone();
  }
};

module.exports = { when };

(免责声明:我是wolkenkit的作者之一,所以请带上一些盐的例子。)