我的BalanceSheetActor
定义如下:
class BalanceSheetActor extends Actor {
val tradables = mutable.Set[Contract]
}
我有一些简单的DepositContract
定义如下:
case class DepositContract(faceValue: Double)
我的模型中的每个合同都是一个BalanceSheetActor
的资产和另一个BalanceSheetActor
的责任,因此任何Contract
的状态将在参与者之间共享(即每个合同将成为至少两套tradables
)的成员。
假设我想将faceValue
的{{1}}增加一些DepositContract
。我要么......
amount
中移除旧合约,并将其替换为新的tradables
。 DepositContract(faceValue + amount)
建模为Contract
。akka.Agent
建模为Contract
(从而封装状态)。选项1似乎不必要地复杂化(另外合同很可能不同步),选项2似乎没问题,但我需要创建数百万合同代理的订单,并担心内存使用情况。我对选项3也有类似的担忧。我不知道这些内存使用问题是否有充分根据。想法?
我希望有一个选项4,这个Scala / Akka noob没有想到......