Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 开始前的钩子:给演员本身的信息_Scala_Akka - Fatal编程技术网

Scala 开始前的钩子:给演员本身的信息

Scala 开始前的钩子:给演员本身的信息,scala,akka,Scala,Akka,假设我覆盖了preStart钩子,并向self发送了一条消息: Class SomeActor extends Actor { override def preStart(): Unit = { self ! SomeMessage } ... } 我是否可以预期SomeMessage将是队列中的第一条消息?否,因为参与者创建是异步进行的,可能有人在构造函数或preStart实际运行之前将消息排入队列。如果您需要确保在任何其他消息之前处理此消息,则需要使用been和s

假设我覆盖了
preStart
钩子,并向
self
发送了一条消息:

Class SomeActor extends Actor {

  override def preStart(): Unit = {
    self ! SomeMessage
  }

  ...

}

我是否可以预期
SomeMessage
将是队列中的第一条消息?

否,因为参与者创建是异步进行的,可能有人在构造函数或
preStart
实际运行之前将消息排入队列。如果您需要确保在任何其他消息之前处理此消息,则需要使用
been
stash

self!消息
def接收=初始
def初始值:接收={
case SomeMessage=>
//做事
unstashAll()
上下文将被初始化
案例=>stash()
}
def已初始化:接收={
//你的正常行为
}
您需要混合使用
akka.actor.Stash
特性,并将此actor配置为使用
DequeBasedMailbox