我在Play(Scala)中创建WebSocket actor。
演员正在系统的其他地方创建,我只需将它们保存在一个地方,按一些变量分组。
存储它们的最佳做法是什么,哪一个占用最少的内存:
答案 0 :(得分:2)
你应该从不存储演员 - 访问演员的唯一方法应该是通过ActorRef
您可以使用很少的模式/做法来找到您的演员。
首先是ActorSelection
,它需要构建正确的actor层次结构。例如,您有按地理位置拆分的用户,那么您可能希望有像
通过这种方式,您可以找到所有使用带通配符选择的演员,尽管您只会使用一个属性来过滤它们
另一种方法是拥有可存储所有标志/属性的数据结构,例如。
case class UserRef(ref:ActorRef,name:String,country:String,zip:Integer,active:Boolean)
然后,您的“目录”会将其存储为users = List[UserRef]
,您可以使用users.filter(_.active = true)
或users.find(_.name = "superuser")