如何通过EventStore资助银行账户DDD风格之间的转账?

问题描述 投票:0回答:1

我们有一个帐户A和一个帐户B.我们想要在A和B之间转移资金/资金。假设我们有一个帐户的聚合根。根据Eric Evan的书,我们需要域服务来处理传输逻辑。对于immidiate一致性,我们需要在单个事务中修改帐户A和帐户B.是否可以使用EventStore在单个事务中写入两个不同的流(帐户A和帐户B)?

domain-driven-design get-event-store
1个回答
1
投票

是否可以使用EventStore在单个事务中写入两个不同的流(帐户A和帐户B)?

从V5 RC1(2018年12月)开始,我找不到任何证据表明事件存储支持对多个事件流的协调写入。

假设您的数据模型是正确的,并且两个帐户确实属于不同的流:这意味着您没有要管理的硬事务边界,而是一个流程。

打个比方:考虑银行转账 - 您认为我们是通过一次交易将资金从美国银行的账户转移到富国银行的账户吗?

更常见的方法是在自己的流中管理转移过程,即跟踪已发生的一切。帐户的更改仍然在他们自己的流中发生,彼此隔离。流程流负责编排 - 验证来自其他元素的确认。

流程的快乐路径可能类似于:

  1. 在流程流中记录转移请求
  2. 在帐户A流中记录资金提取
  3. 在流程流中记录资金提取的确认
  4. 将资金存款记录在帐户B流中
  5. 在流程流中记录资金存款的确认 记录流程流中完成的流程

但是如果你真的需要同时修改这两个帐户,那么你需要它们由相同的coarse grained lock管理。由于事件存储仅保证在流级别锁定,因此您需要重新评估数据模型。

© www.soinside.com 2019 - 2024. All rights reserved.