cqrs – 事件采购中的反应器/反应是什么?

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

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

最佳答案 投影是一个函数,它接收域事件并将其转换为列表,树,图形上的动作,等等……

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

因此,投影基本上是域事件和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的作者之一,所以请带上一些盐的例子.)

点赞