actor,actor实例和actorref之间有什么区别

时间:2015-04-16 00:50:14

标签: akka

在代码的上下文中实际上是一个Actor。它是扩展UnTypedActor的java类吗?即1个演员= 1个等级。 如果是,我们是否有多个实例,使用actorref简单引用。同一个演员的多个actorref实例如何相互不同?

演员失败或重演演员是什么意思?我们只是用最后一个持久化的数据变量重新加载这个类吗?

1 个答案:

答案 0 :(得分:3)

Actor的行为由代码中的类表示。

  • 在运行时,一个逻辑actor在系统中有一个(但不总是相同的)实例(在GC之前内存中可能有更多)。
  • 一个类可能对应于几个逻辑参与者 - 每个都有不同的地址。
  • Actor实例是Actors系统中的UntypedActor(或scala中的Actor)实例。
  • ActorRef是对一个(本地或远程)的引用,但并不总是相同的实例(当actor重新启动时它会发生变化),例如到一个具有自己地址的逻辑Actor。

失败就是说,从onReceive(Scala中的receive)方法抛出异常。当actor失败时,它会向supervisor发送Terminated消息,并且(取决于SupervisorStrategy)可能会重新启动或停止。重启意味着:

  • 调用演员实例的preRestart方法
  • 创建新实例(将在重新创建后从相同的ActorRef引用)
  • 调用newely创建的实例的postRestart方法。在preRestart之后,演员的状态正在迷失。