|
saga也是一个聚合根,拥有自己的uid,在command handle里可以直接像聚合一样调用。下面是 command handle 的调用代码,省略了多余代码,看起来更清晰。
|
saga公开的只有一个startup方法。
|
saga也是一个聚合根,拥有自己的uid,在command handle里可以直接像聚合一样调用。下面是 command handle 的调用代码,省略了多余代码,看起来更清晰。
|
saga公开的只有一个startup方法。
private bool[] dones{get;set;}
private IActor[] ChildActors{get;set;}
}
MoneyTransferActor中有两个ChildActor,一个负责user1的减钱一个负责user2的加钱。MoneyTransferActor负责监管整个转账事务,它的两个子actor必须都成功,如果其中一个成功了而另一个失败了则MoneyTransferActor负责通知成功的那个子actor回退。
事务完成后MoneyTransferActor的状态持久化起来即是完整的日志,完整的可以原路返回。
是的,需要一个监管全局事务的管理者,但不能使用锁。Akka的Actor模型使用的是语言本身协调机制:
|