2014-07-13 26 views
0

我在Play(Scala)中創建WebSocket actor。在集合中存儲Akka actor的框架

參與者正在系統中的其他地方創建,我只需要將它們保存在一個地方,按照一些變量進行分組。

什麼是用來存儲它們的最佳實踐,以及一個佔用的內存量最小:

  • 序列[演員]
  • 序列[ActorRef]
  • 別的東西嗎?

回答

2

你應該NEVER店演員 - 訪問的演員應該通過ActorRef

有幾個模式/你可以用它來找到你的角色的做法的唯一途徑。

首先是ActorSelection,它需要建立正確的參與者層次結構。舉例來說,你必須按地理位置劃分的用戶,那麼你可能想選擇的演員像

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

這種方式,你可以找到使用通配符選擇所有的演員,雖然你會堅持只是一個屬性來過濾它們

另一種方式是hav e數據結構可以存儲所有的標誌/屬性,例如。

案例類UserRef(參考:ActorRef,名稱:字符串,國家:字符串,郵編:整數,活躍:布爾)

那麼,你的 '目錄' 將它們存儲爲users = List[UserRef]和你將能夠使用users.filter(_.active = true)users.find(_.name = "superuser")

一次查詢此結構