【发布时间】:2017-07-03 20:58:09
【问题描述】:
每当我创建一个需要一些异步获取的数据来初始化自身的演员时,我发现自己使用了这样的成语。它有名字吗? (这是最好的方法吗?)
class AsyncInitActor(db: Database, someId: UUID) extends Actor with ActorStash {
case class Initialize(something: Something)
override def preStart() = {
db.getSomething(someId) onSuccess { something =>
self ! Initialize(something)
}
}
def receive = {
case Initialize(something) =>
context become initialized(something)
unstashAll()
case _ => stash()
}
def initialized(something): Receive = {
case whatever =>
}
}
对于通过集群分片创建的actors,异步请求发生在receive而不是preStart。
明确地说,我不是在寻找 GoF 模式。
【问题讨论】:
标签: asynchronous design-patterns initialization akka actor