我们有一个帐户A和一个帐户B.我们想要在A和B之间转移资金/资金。假设我们有一个帐户的聚合根。根据Eric Evan的书,我们需要域服务来处理传输逻辑。对于immidiate一致性,我们需要在单个事务中修改帐户A和帐户B.是否可以使用EventStore在单个事务中写入两个不同的流(帐户A和帐户B)?
是否可以使用EventStore在单个事务中写入两个不同的流(帐户A和帐户B)?
从V5 RC1(2018年12月)开始,我找不到任何证据表明事件存储支持对多个事件流的协调写入。
假设您的数据模型是正确的,并且两个帐户确实属于不同的流:这意味着您没有要管理的硬事务边界,而是一个流程。
打个比方:考虑银行转账 - 您认为我们是通过一次交易将资金从美国银行的账户转移到富国银行的账户吗?
更常见的方法是在自己的流中管理转移过程,即跟踪已发生的一切。帐户的更改仍然在他们自己的流中发生,彼此隔离。流程流负责编排 - 验证来自其他元素的确认。
流程的快乐路径可能类似于:
但是如果你真的需要同时修改这两个帐户,那么你需要它们由相同的coarse grained lock管理。由于事件存储仅保证在流级别锁定,因此您需要重新评估数据模型。