【问题标题】:Can Akka FSM be leveraged to use request level state可以利用 Akka FSM 来使用请求级别状态吗
【发布时间】:2018-05-29 14:20:12
【问题描述】:
我正在尝试使用 Akka.Net 实现订单系统状态机行为。我发现这可以使用 Akka.Fsm 中的 FSM 类来完成。我的对象状态因请求而异,即一个订单可以处于创建状态,而另一个订单可以处于 PaymentProcessing 状态。 Akka.Net 是否支持这种按实例管理状态的行为。也可以在分布式系统中使用它吗?
【问题讨论】:
标签:
akka
akka.net
fsm
akka-cluster
akka-persistence
【解决方案1】:
使用 Actor 对 DDD 建模的常用方法是为每个聚合实例创建一个 Actor 实例。因此,让两个参与者处于两种不同的处理状态是完全自然的行为。如果您希望状态机 DSL 支持长时间运行的进程中不同参与者化身之间的持久性,您可能需要查看PersistentFSM。
在 Akka.Cluster 的帮助下完全支持 Actor 分发,并且其他模块构建在它之上,例如 Akka.Cluster.Sharding。实际情况取决于您想要的控制程度和速度。