Play 2.0 と Akka を使用して Web アプリケーションをデプロイしています。アクターは 1 回の Web リクエストで互いに通信する必要があることが多いため、責任に基づいてアクターを分離しました。
たとえば、登録されたデバイスを管理するアクターが与えられた場合、関連するユーザー アカウントを処理する別のアクターにクエリを実行する必要があります。
class DeviceActor extends Actor {
val accountActorRef = ...
def receive = {
case GetAccountByDeviceId(id:String) =>
val accountId = getAccountIdAssociatedWithDevice(id)
accountActorRef ? GetAccountById(accountId) map {
case account: Account => sender ! account
}
}
}
コントローラーから呼び出すとDeviceActor
、常に取得されます
akka.pattern.AskTimeoutException