aggregate - CQRS sagas - 我理解对了吗?

标签 aggregate cqrs saga

我试图理解 传奇 ,同时我对它们有一种特定的思考方式——但我不确定我的想法是否正确。因此,我想详细说明并让其他人告诉我这是对还是错。

据我了解,sagas 是解决如何 的问题的方法。为长时间运行的进程建模 .长时间运行意味着:涉及多个命令、多个事件以及可能的多个聚合。该过程不在参与聚合之一内建模,以避免它们之间的依赖关系。

基本上,saga 只不过是对内部和外部命令/事件作出 react 的命令/事件处理程序。它不包含自己的逻辑,它只是一个(有限的)状态机,因此提供了诸如 之类的任务。当事件 X 发生时,发送命令 Y .

Sagas 被持久化到事件存储以及聚合中,与特定聚合实例相关联,因此在使用该特定聚合(或一组聚合)时会重新加载。

这是正确的吗?

最佳答案

有不同的方法来实现 Sagas。从发布命令的无状态事件处理程序一直到携带所有状态并且基本上是域的聚合本身。 Udi Dahan 曾经写过一篇关于 Sagas 是(在他的特定情况下)正确建模系统中的唯一聚合的文章。我会查找并更新此答案。

还有基于文档的 sagas 的概念。

关于aggregate - CQRS sagas - 我理解对了吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13489829/

相关文章:

node.js - 使用聚合 MongoDB

postgresql - STDDEV_POP VS STDDEV_SAMP

sql - SELECT 列表中子查询内的不同 LISTAGG

domain-driven-design - CQRS/DDD 如何使用命令将对象添加到聚合中?

command - NEventStore:传奇、命令,不要丢失它们

r - 将“by”对象转换为R中的数据帧

nservicebus - 处理 EventStore 中并发异常的正确方法是什么?

java - Command Handler 是否只是从总线接收命令并发布事件?

unit-testing - 单元测试 redux-saga 任务取消

javascript - 如何从gradle调用任意方法?