【问题标题】:Play framework storing Akka actors in collections将 Akka Actor 存储在集合中的 Play 框架
【发布时间】:2014-07-13 22:17:48
【问题描述】:

我正在 Play (Scala) 中创建 WebSocket 演员。

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

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

  • Seq[演员]
  • Seq[ActorRef]
  • 还有别的吗?

【问题讨论】:

    标签: scala playframework akka


    【解决方案1】:

    您应该从不存储 actor - 访问 actor 的唯一方法应该是通过 ActorRef

    您可以使用一些模式/实践来找到您的演员。

    首先是ActorSelection,它需要建立正确的参与者层次结构。例如,您有按地理位置划分的用户,那么您可能希望有类似的演员选择

    • /user/..../US/PA/18900/user1
    • /user/..../US/PA/18900/user2
    • /user/..../US/NJ/07000/user3

    这样你可以找到所有使用通配符选择的演员,尽管你会坚持只用一个属性来过滤它们

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

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

    然后,您的“目录”会将它们存储为 users = List[UserRef],您将能够使用 users.filter(_.active = true)users.find(_.name = "superuser") 一次性查询此结构

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-02
      • 2012-07-18
      • 1970-01-01
      相关资源
      最近更新 更多