如何限制对本地参与者的访问

时间:2015-08-20 16:21:13

标签: scala akka actor

我正在为类成员搜索private之类的封装方法。我希望演员提供接受一些常见的无害信息和特权,这可能会以不合需要的方式改变状态。我还可以构建代理actor,根据访问策略过滤消息。但是这两个演员仍然可以通过完整路径演员参考。我怎样才能使一些actor引用私有,只能由其父进程访问?

1 个答案:

答案 0 :(得分:3)

只要使用ActorSelection知道路径,任何其他actor都可以寻址任何actor。

如果您想限制某些消息,可以使用package-private。

之类的内容

假设你有DangerousActor并且你只希望在同一个套餐中定义的演员能够发送DangerousMessage,但你也有SafeMessage并且你对其他任何人都没问题演员系统发送的。

package dangerous

object DangerousActor {
  private[dangerous] case object DangerousMessage
  case object SafeMessage
}

case DangerousActor extends Actor {
  import DangerousActor._

  def receive = {
    case DangerousMessage =>
    case SafeMessage => 
  }
}

只有dangerous包中定义的演员才能引用DangerousMessage