学習目的のために、リモートアクタからデータを取得する単純な再生アプリケーションを実装しようとしています。アクターのコードは次のとおりです。Play framework 2.0 - Actorの代わりにdeadLetters
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://[email protected]:2552/user/server")
}
numbers.html.scala
ファイル:
@(message: String)
@main("Header") {
<h1>@message</h1>
}
をだから私はことを期待します私が127.0.0.1:9000/numbers
に行くと、私はサーバーの俳優へのパスを持つページを手に入れました。これの代わりに、私は<h1>deadLetters</h1>
を得ます。何が間違っていて、どうやってこれを正しく行うべきですか?
を追加してくださいあなたは、両端にリモーティングを有効にしていることがありますか? –
@ViktorKlang:私はプレーンakkaに類似した方法で演奏中のリモーティングを有効にしようとしましたが、akka-remoteパッケージがないので、 'java.lang.ClassNotFoundException:akka.remote.RemoteActorRefProvider'を取得しました。する。 –
Akkaドキュメントはかなり良いです:http://doc.akka.io/docs/akka/2.0/scala/remoting.html –