为什么Akka演员在停止指令后打印?

时间:2015-10-18 18:02:37

标签: akka actor

我现在正在学习Akka,有些事情我不明白。

我已经读过context.stop(self)停止了actor并忽略了队列中的其余消息。这是真的吗?

我有以下演员,收到“停止”消息,打印“要停止”然后“我打印了一些东西,但我不活着”。 怎么可以打印第二行?我认为context.stop(self)会立即阻止演员。

class Alice extends Actor {
  def receive = {
    case "stop" =>
      println("gonna stop")
      context.stop(self)
      println("I printed something but I'm not alive")
    // other cases
  }

1 个答案:

答案 0 :(得分:3)

  

这是真的吗?

是的,这是真的。

  

如何打印第二行?我认为controller.reset(); controller.reset({ object: person }); controller.reset({ object: person, propertyName: 'firstName' }); 会立即阻止演员。

context.stop(self)方法将阻止actor处理actor的收件箱中的任何其他消息。但它不会立即跳出处理当前消息的方法。它允许actor完成当前消息的处理,但之后不会处理任何其他消息。