播放集合中存储Akka演员的框架

时间:2014-07-13 12:55:05

标签: scala playframework akka

我在Play(Scala)中创建WebSocket actor。

演员正在系统的其他地方创建,我只需将它们保存在一个地方,按一些变量分组。

存储它们的最佳做法是什么,哪一个占用最少的内存:

  • 序号[演员]
  • 序号[ActorRef]
  • 别的什么?

1 个答案:

答案 0 :(得分:2)

你应该从不存储演员 - 访问演员的唯一方法应该是通过ActorRef

您可以使用很少的模式/做法来找到您的演员。

首先是ActorSelection,它需要构建正确的actor层次结构。例如,您有按地理位置拆分的用户,那么您可能希望有像

这样的演员选择
  • /用户/..../ US / PA / 18900 / USER1
  • /用户/..../ US / PA / 18900 / USER2
  • /用户/..../ US / NJ / 07000 /用户3

通过这种方式,您可以找到所有使用带通配符选择的演员,尽管您只会使用一个属性来过滤它们

另一种方法是拥有可存储所有标志/属性的数据结构,例如。

  

case class UserRef(ref:ActorRef,name:String,country:String,zip:Integer,active:Boolean)

然后,您的“目录”会将其存储为users = List[UserRef],您可以使用users.filter(_.active = true)users.find(_.name = "superuser")

一次查询此结构