学習目的で、リモート アクターからデータを取得する単純な再生アプリケーションを実装しようとしています。アクターのコードは次のとおりです。
import akka.actor.{Props, ActorSystem, Actor}
class NumbersServer extends Actor {
var number = 0
protected def receive = {
case 'next => {
number += 1
number
}
case 'reset => number = 0
case 'exit => context.stop(self)
case 'get => sender ! number
}
}
object Server {
def main(args: Array[String]) {
val system = ActorSystem("ServerSystem")
val server = system.actorOf(Props[NumbersServer], "server")
}
}
これを jar にパッケージ化し、コマンド ラインから起動します。別のウィンドウから開いた Scala コンソールからこのアクターにメッセージを送信しようとすると、すべて正常に動作します。ここで、Play フレームワークからアクターを取得したいと考えています。Application
オブジェクトで、次のメソッドを定義します。
def numbers = Action {
Ok(views.html.numbers(Client.actor.path.name))
}
次に、models
パッケージで Client オブジェクトを定義します。
object Client {
import play.api.Play.current
val actor = Akka.system.actorFor("akka://ServerSystem@127.0.0.1:2552/user/server")
}
numbers.html.scala
ファイル:
@(message: String)
@main("Header") {
<h1>@message</h1>
}
したがって、 にアクセスする127.0.0.1:9000/numbers
と、サーバー アクターへのパスを含むページが表示されると思います。これの代わりに、私は<h1>deadLetters</h1>
. 私は何を間違っており、これを正しく行うにはどうすればよいですか?