7
比方说,我重写preStart
钩和发送消息到self
:起动前钩:一条消息,演员本身
Class SomeActor extends Actor {
override def preStart(): Unit = {
self ! SomeMessage
}
...
}
我能想到的是SomeMessage
将在队列中的第一条消息?
比方说,我重写preStart
钩和发送消息到self
:起动前钩:一条消息,演员本身
Class SomeActor extends Actor {
override def preStart(): Unit = {
self ! SomeMessage
}
...
}
我能想到的是SomeMessage
将在队列中的第一条消息?
不,因为actor的创建是异步发生的,所以有人可能会在构造函数或preStart
实际运行之前将消息排入队列。如果您需要确保在任何其他这种消息的处理,那么你就需要使用become
和stash
:
self ! SomeMessage
def receive = initial
def initial: Receive = {
case SomeMessage =>
// do stuff
unstashAll()
context become initialized
case _ => stash()
}
def initialized: Receive = {
// your normal behavior
}
你需要在akka.actor.Stash
特质混合和配置这个演员使用DequeBasedMailbox
。